Podpowiedź dotycząca numeru telefonu

Phone Number Hint API, biblioteka z wykorzystaniem Usług Google Play, pozwala w łatwy sposób wyświetlać numery telefonów użytkownika (oparte na kartach SIM) jako wskazówki.

Zalety korzystania z funkcji sugestii numeru telefonu:

  • Nie trzeba prosić o dodatkowe uprawnienia
  • Brak konieczności ręcznego wpisywania numeru telefonu przez użytkownika.
  • Nie musisz mieć konta Google.
  • Nie są bezpośrednio powiązane z procesami logowania/uruchamiania
  • 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 za pomocą interfejsu PendingIntent. Po uruchomieniu intencji PendingIntent użytkownik zobaczy interfejs z listą wszystkich numerów telefonów (obsługiwanych przez karty SIM). Użytkownik może następnie wybrać numer telefonu, którego chce użyć, lub anulować cały proces. Wybrany numer telefonu zostanie wtedy udostępniony deweloperowi, aby mógł pobrać 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 za pomocą podanej metody GetPhoneNumberHintIntentRequest.Builder(). Ten obiekt żądania może zostać użyty do uzyskania Intent służącego do rozpoczęcia procedury podpowiedzi dotyczącej numeru telefonu.

Kotlin

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

Java

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

Prośba o podpowiedź dotyczącą numeru telefonu

Wywołaj SignInClient.getPhoneNumberHintIntent(), przekazując poprzedni obiekt GetPhoneNumberHintIntentRequest, aby pobrać PendingIntent w celu zainicjowania procedury 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

Przekaż Intent do SignInClient.getPhoneNumberFromIntent, aby uzyskać 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);
              }
          }
  });