Podpowiedź dotycząca numeru telefonu

Interfejs Phone Number Hint API, biblioteka wykorzystująca Usługi Google Play, pozwala łatwo wyświetlać numery telefonów użytkownika (na karcie SIM) jako wskazówkę.

Oto zalety korzystania ze wskazówek dotyczących numeru telefonu:

  • Nie trzeba prosić o dodatkowe uprawnienia
  • Brak konieczności ręcznego wpisywania numeru telefonu przez użytkownika
  • Nie jest potrzebne konto Google
  • Brak bezpośredniego związku z procesami logowania/rejestracji
  • 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:21.0.0'
  }

Jak to działa

Interfejs Phone Number Hint API używa interfejsu PendingIntent do inicjowania procesu. Po uruchomieniu intencji PendingIntent użytkownik zobaczy interfejs użytkownika z listą 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 wtedy udostępniony deweloperowi, aby mógł pobrać go z Intent.

Interfejs i ustawienia podpowiedzi dotyczących numerów telefonów.
Rysunek 1. Interfejs i ustawienia podpowiedzi dotyczącej numeru telefonu

Tworzenie obiektu GetPhoneNumbeHintIntentRequest

Zacznij od utworzenia obiektu GetPhoneNumberHintIntentRequest przy użyciu udostępnionej metody GetPhoneNumberHintIntentRequest.Builder(). Następnie można użyć tego obiektu do uzyskania Intent w celu uruchomienia 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 metodę SignInClient.getPhoneNumberHintIntent(), przekazywanej w poprzednim obiekcie GetPhoneNumberHintIntentRequest, aby pobrać PendingIntent i rozpocząć procedurę 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 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);
              }
          }
  });