Suggerimento numero di telefono

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

I vantaggi dell'utilizzo del Suggerimento numero di telefono includono quanto segue:

  • Non sono necessarie ulteriori richieste di autorizzazione
  • Elimina la necessità da parte dell'utente 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 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:21.2.0'
  }

Come funziona

L'API Phone Number Hint utilizza un elemento PendingIntent per avviare il flusso. Una volta avviato PendingIntent, all'utente verrà presentata una UI che elenca tutti i numeri di telefono (basati su SIM). L'utente può quindi scegliere di selezionare un numero di telefono che vuole utilizzare o annullare la procedura. Il numero di telefono selezionato verrà quindi messo a disposizione dello sviluppatore per recuperarlo dal Intent.

UI e impostazioni del suggerimento per il numero di telefono.
Figura 1. UI e impostazioni del suggerimento per il numero di telefono

Crea un oggetto GetPhoneNumbeHintIntentRequest

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

Kotlin

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

Java

GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();

Suggerimento per il numero di telefono in corso

Chiama SignInClient.getPhoneNumberHintIntent(), trasmettendo l'oggetto GetPhoneNumberHintIntentRequest precedente, per recuperare PendingIntent e avviare il flusso Suggerimento 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 in corso...

Passa il 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);
              }
          }
  });