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 di Suggerimento numero di telefono includono i seguenti:

  • Non sono necessarie richieste di autorizzazione aggiuntive
  • 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 di 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 da 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.0.0'
  }

Come funziona

L'API Phone Number Hint utilizza un PendingIntent per avviare il flusso. Una volta avviato PendingIntent, all'utente verrà presentata un'interfaccia utente in cui sono elencati 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 reso disponibile allo sviluppatore per il recupero da Intent.

Interfaccia utente e impostazioni per i suggerimenti sui numeri di telefono.
Figura 1. UI e impostazioni per i suggerimenti sui numeri 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 di suggerimento sul numero di telefono.

Kotlin

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

Java

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

Richiesta di suggerimento numero di telefono

Chiama SignInClient.getPhoneNumberHintIntent(), passando l'oggetto GetPhoneNumberHintIntentRequest precedente, per recuperare PendingIntent e avviare il flusso di suggerimento sui numeri 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 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

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