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 dell'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 Google Play Services per l'API Phone Number Hint 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.2.0'
  }

Come funziona

L'API Phone Number Hint utilizza una classe PendingIntent per avviare il flusso. Una volta avviato PendingIntent, l'utente visualizzerà presenta una UI che elenca tutti i numeri di telefono (basati su SIM). L'utente può quindi scegli di selezionare un numero di telefono o di annullare la procedura. Il numero di telefono selezionato verrà quindi messo a disposizione dello sviluppatore per recuperarlo da 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 fornito GetPhoneNumberHintIntentRequest.Builder() . Questo oggetto di richiesta può quindi essere utilizzato per ottenere un Intent per avviare Flusso del suggerimento del 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 il numero SignInClient.getPhoneNumberHintIntent(), passando per l'oggetto GetPhoneNumberHintIntentRequest precedente, per recuperare PendingIntent per 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...

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