Podpowiedź dotycząca numeru telefonu

Interfejs Phone Number Hint API to biblioteka wykorzystująca Usługi Google Play, która pozwala w prosty sposób wyświetlać numery telefonów użytkownika (na podstawie kart SIM) jako wskazówki.

Zalety korzystania z podpowiedzi numeru telefonu:

  • Nie potrzeba żadnych dodatkowych próśb o przyznanie uprawnień
  • Brak konieczności ręcznego wpisywania numeru telefonu przez użytkownika
  • Nie potrzebujesz konta Google
  • Brak bezpośredniego powiązania z przepływami pracy logowania/zakładania
  • Szersza obsługa wersji Androida w porównaniu z Autouzupełnianiem

Zanim zaczniesz

Aby przygotować aplikację, wykonaj czynności opisane w poniższych sekcjach.

Konfiguracja aplikacji

Dodaj zależność Usług Google Play do interfejsu Phone Number Hint API do pliku build.gradle modułu. Jest to zwykle app/build.gradle:

  apply plugin: 'com.android.application'

  ...

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

Jak to działa

Interfejs Phone Number Hint API używa do inicjowania procesu płatności za pomocą PendingIntent. Po uruchomieniu intencji PendingIntent użytkownik zobaczy interfejs z listą wszystkich numerów telefonów opartych na kartach SIM. Użytkownik może następnie wybrać numer telefonu, którego chce użyć, lub anulować proces. Wybrany numer telefonu zostanie udostępniony deweloperowi w celu pobrania go z Intent.

Interfejs i ustawienia podpowiedzi dotyczącej numeru telefonu.
Rysunek 1. Interfejs i ustawienia podpowiedzi dotyczącej numeru telefonu

Tworzenie obiektu GetPhoneNumbeHintIntentRequest

Zacznij od utworzenia obiektu GetPhoneNumberHintIntentRequest przy użyciu podanej metody GetPhoneNumberHintIntentRequest.Builder(). Można następnie użyć tego obiektu żądania Intent, aby rozpocząć procedurę podpowiedzi dotyczącej numeru telefonu.

Kotlin

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

Java

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

Prośba o podpowiedź numeru telefonu

Wywołaj SignInClient.getPhoneNumberHintIntent(), przekazując poprzedni obiekt GetPhoneNumberHintIntentRequest, aby pobrać PendingIntent w celu zainicjowania procesu podpowiedzi dotyczącej numeru telefonu.

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

Pobieram numer telefonu

Podaj Intent do SignInClient.getPhoneNumberFromIntent, aby pobrać numer telefonu.

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