Suggerimento numero di telefono

L'API Phone Number Hint, basata su Google Play Services, fornisce un modo semplice per mostrare i numeri di telefono di un utente (basati su SIM) come suggerimento.

L'utilizzo del numero di telefono suggerito include i seguenti vantaggi:

  • Non sono richieste richieste di autorizzazione aggiuntive
  • Elimina la necessità per l'utente di digitare manualmente il numero di telefono
  • Non è necessario un Account Google
  • Non direttamente legato ai flussi di lavoro di accesso/registrazione
  • Supporto più ampio per le versioni Android rispetto alla compilazione automatica

Prima di iniziare

Per preparare la tua app, completa i passaggi 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 tuo modulo, che in genere è app/build.gradle:

  apply plugin: 'com.android.application'

  ...

  dependencies {
    implementation 'com.google.android.gms:play-services-auth:20.5.0'
  }

Come funziona

L'API Phone Number Hint utilizza un PendingIntent per avviare il flusso. Dopo l'avvio dell'In sospeso, all'utente verrà mostrata un'interfaccia utente con l'elenco di 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à quindi reso disponibile allo sviluppatore per recuperarlo dal Intent.

UI e impostazioni dei suggerimenti per i numeri di telefono.
Figura 1. UI e impostazioni relative ai suggerimenti sul numero di telefono

Crea un oggetto GetPhoneNumbeHintIntentRequest

Per iniziare, crea un oggetto GetPhoneNumberHintIntentRequest utilizzando il metodo GetPhoneNumberHintIntentRequest.Builder() fornito. L'oggetto di richiesta può essere quindi 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();

Suggerimento del numero di telefono richiesto

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

ActivityResultLauncher phoneNumberHintIntentResultLauncher = ...

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 sul Intent per 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

ActivityResultLauncher phoneNumberHintIntentResultLauncher =
  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);
              }
          }
  });