L'API Phone Number Hint, una libreria basata su Google Play Services, fornisce un modo semplice per mostrare i numeri di telefono di un utente (basati sulla SIM) come suggerimento.
I vantaggi dell'utilizzo di Suggerimento del numero di telefono includono i seguenti:
- Non sono richieste richieste di autorizzazione aggiuntive
- Elimina la necessità di digitare manualmente il numero di telefono
- Non è necessario un Account Google
- Non direttamente collegato ai flussi di lavoro di accesso/registrazione
- Supporto più ampio per le versioni Android rispetto alla compilazione automatica
Prima di iniziare
Per preparare l'app, completa i passaggi indicati nelle sezioni che seguono.
Configura l'app
Aggiungi la dipendenza Google Play Services per l'API Phone Number Hint al file di build Gradle del tuo modulo, che in genere è app/build.gradle
:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:20.4.1'
}
Come funziona
L'API Phone Number Hint utilizza un PendingIntent
per avviare il flusso. Dopo il lancio di PendingIntent, all'utente verrà presentata una UI che elenca tutti i numeri di telefono (basati sulla SIM). L'utente può quindi scegliere di selezionare un numero di telefono da utilizzare o annullare il flusso.
Il numero di telefono selezionato verrà reso disponibile allo sviluppatore per il recupero da Intent
.

Crea un oggetto GetPhoneNumbeHintIntentRequest
Inizia creando un oggetto GetPhoneNumberHintIntentRequest
utilizzando il metodo GetPhoneNumberHintIntentRequest.Builder()
fornito. L'oggetto di richiesta può essere utilizzato per ottenere un Intent
per avviare il flusso Suggerimento del numero di telefono.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Richiesta di suggerimento del numero di telefono
Chiama SignInClient.getPhoneNumberHintIntent()
, passando nell'oggetto GetPhoneNumberHintIntentRequest
precedente, per recuperare PendingIntent
per avviare il flusso Suggerimento del numero di telefono.
Kotlin
val phoneNumberHintIntentResultLauncher = ... Identity.getSignInClient(activity) .getPhoneNumberHintIntent(request) .addOnSuccessListener { result: PendingIntent -> try { phoneNumberHintIntentResultLauncher.launch( IntentSenderRequest.Builder(result).build() ) } catch (e: Exception) { Log.e(TAG, "Launching the PendingIntent failed") } } .addOnFailureListener { Log.e(TAG, "Phone Number Hint failed") }
Java
ActivityResultLauncherphoneNumberHintIntentResultLauncher = ... Identity.getSignInClient(activity) .getPhoneNumberHintIntent(request) .addOnSuccessListener( result -> { try { phoneNumberHintIntentResultLauncher.launch(result.getIntentSender()); } catch(Exception e) { Log.e(TAG, "Launching the PendingIntent failed", e); } }) .addOnFailureListener(e -> { Log.e(TAG, "Phone Number Hint failed", e); });
Recupero del numero di telefono
Passa il Intent
a SignInClient.getPhoneNumberFromIntent
per recuperare il numero di telefono.
Kotlin
val phoneNumberHintIntentResultLauncher = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result -> try { val phoneNumber = Identity.getSignInClient(activity).getPhoneNumberFromIntent(result.data) } catch(e: Exception) { Log.e(TAG, "Phone Number Hint failed") } }
Java
ActivityResultLauncherphoneNumberHintIntentResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback () { @Override public void onActivityResult(ActivityResult result) { try { String phoneNumber = Identity.getSignInClient(activity).getPhoneNumberFromIntent(result.getData()); } catch { Log.e(TAG, "Phone Number Hint failed", e); } } });