Suggerimento numero di telefono

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

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

  • Non sono richieste richieste di autorizzazione aggiuntive
  • Elimina la necessità di digitare manualmente il numero di telefono
  • Non è necessario un Account Google
  • Non direttamente collegato ai flussi di lavoro di accesso
  • 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

Nel file build.gradle a livello di progetto, includi il repository Maven di Google nelle sezioni buildscript e allprojects:

buildscript {
  repositories {
    google()
    mavenCentral()
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

Aggiungi la dipendenza da Google Play Services per l'API Phone Number Hint al tuo file di build Gradle del modulo, che in genere è app/build.gradle:

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

Come funziona

L'API Phone Number Hint utilizza un elemento PendingIntent per avviare il flusso. Una volta avviato il PendingIntent, all'utente verrà presentata una UI, che elenca tutti i numeri di telefono (basati sulla SIM). L'utente può quindi scegliere di selezionare un numero di telefono da utilizzare o annullare la procedura. Il numero di telefono selezionato verrà quindi reso disponibile allo sviluppatore per il recupero dalla Intent.

UI e impostazioni del numero di telefono.
Figura 1. UI e impostazioni dei suggerimenti relativi ai numeri di telefono

Crea un oggetto GetPhoneNumbeHintIntentRequest

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

Kotlin

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

Java

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

Suggerimento per richiesta numero di telefono

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

Kotlin

val phoneNumberHintIntentResultLauncher: ActivityResultLauncher = ...

Identity.signInClient(activity)
  .getPhoneNumberHintIntent(request)
  .addOnSuccessListener(
      try {
          phoneNumberHintIntentResultLauncher.launch(request.getIntentSender())
      } 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 a SignInClient.getPhoneNumberFromIntent per recuperare il numero di telefono.

Kotlin

val phoneNumberHintIntentResultLauncher: ActivityResultLauncher =
  registerForActivityResult(StartActivityForResult()) { result ->
      try {
          val phoneNumber = Identity.signInClient(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);
              }
          }
  });