L'API Phone Number Hint, una libreria basata su Google Play Services, offre un modo semplice per mostrare i numeri di telefono (basati su SIM) di un utente come suggerimento.
I vantaggi dell'utilizzo del suggerimento del numero di telefono includono:
- Non sono necessarie richieste di autorizzazione aggiuntive
- Elimina la necessità per l'utente di digitare manualmente il numero di telefono
- Non è necessario un Account Google
- Non direttamente collegati ai flussi di lavoro di accesso o registrazione
- Supporto più ampio per le versioni di Android rispetto alla compilazione automatica
Come funziona
L'API Phone Number Hint utilizza un PendingIntent
per avviare il flusso. Una volta avviato PendingIntent, all'utente verrà mostrata un'interfaccia utente che elenca tutti i numeri di telefono (basati su 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
.

Per preparare l'app, completa i passaggi descritti nelle sezioni seguenti.
Configura la tua app
Aggiungi la dipendenza Google Play Services per l'API Phone Number Hint al file di build Gradle del modulo, che in genere è app/build.gradle
:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:21.4.0'
}
Crea un oggetto GetPhoneNumberHintIntentRequest
Inizia creando un oggetto GetPhoneNumberHintIntentRequest
utilizzando il metodo
GetPhoneNumberHintIntentRequest.Builder()
fornito. Questo oggetto della richiesta può essere poi utilizzato per ottenere un Intent
per avviare il flusso
del suggerimento del numero di telefono.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Richiesta di suggerimento per il numero di telefono
Chiama SignInClient.getPhoneNumberHintIntent()
,
passando l'oggetto GetPhoneNumberHintIntentRequest
precedente,
per recuperare PendingIntent
per avviare il flusso del 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 in corso…
Passa in 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); } } });