Suggerimento numero di telefono

L'API Suggerimento numero di telefono, 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.

Ecco alcuni vantaggi dell'utilizzo dell'indicazione del numero di telefono:

  • Non sono necessarie richieste di autorizzazioni 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 registrazione/accesso
  • Supporto più ampio per le versioni di Android rispetto alla compilazione automatica

Prima di iniziare

Per preparare l'app, completa i passaggi descritti nelle sezioni seguenti.

Configura la tua app

Aggiungi la dipendenza Google Play Services per l'API Suggerimento numero di telefono al file di build Gradle del modulo, solitamente app/build.gradle:

  apply plugin: 'com.android.application'

  ...

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

Come funziona

L'API Phone Number Hint utilizza un PendingIntent per avviare il flusso. Una volta lanciato PendingIntent, all'utente verrà presentata 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à poi reso disponibile allo sviluppatore per essere recuperato da Intent.

UI e impostazioni di Suggerimento numero di telefono.
Figura 1. Interfaccia utente e impostazioni di Suggerimento numero di telefono

Crea un oggetto GetPhoneNumbeHintIntentRequest

Per iniziare, crea un oggetto GetPhoneNumberHintIntentRequest utilizzando il metodo GetPhoneNumberHintIntentRequest.Builder() fornito. Questo oggetto della richiesta può essere utilizzato per ottenere un Intent per avviare il flusso di suggerimenti per i numeri di telefono.

KotlinJava
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();

Suggerimento per la richiesta del numero di telefono

Chiama SignInClient.getPhoneNumberHintIntent(), passando l'oggetto GetPhoneNumberHintIntentRequest precedente, per recuperare il PendingIntent per avviare il flusso Suggerimento numero di telefono.

KotlinJava
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")
}
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 Intent a SignInClient.getPhoneNumberFromIntent per recuperare il numero di telefono.

KotlinJava
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")
      }
  }
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);
              }
          }
  });