Suggerimento numero di telefono

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

I vantaggi dell'utilizzo del numero di telefono includono:

  • Non sono necessarie ulteriori richieste di autorizzazione
  • Elimina la necessità 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 riportati 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 Google Play Services dell'API Phone Number Hint al tuo file di build Gradle del modulo, che di solito è app/build.gradle:

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

Come funziona

L'API Phone Number Hint utilizza una PendingIntent per avviare il flusso. Una volta avviato PendingIntent, l'utente riceverà 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 il flusso. Il numero di telefono selezionato verrà poi messo a disposizione dello sviluppatore per il recupero dalla Intent.

Impostazioni e UI dei numeri di telefono.
Figura 1. Impostazioni e UI dei numeri di telefono

Crea un oggetto GetPhoneNumbeHintIntentRequest

Inizia creando un oggetto GetPhoneNumberHintIntentRequest utilizzando il metodo GetPhoneNumberHintIntentRequest.Builder() fornito. Tale oggetto 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();

Richiesta di conferma tramite numero di telefono

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