Podpowiedź dotycząca numeru telefonu

Interfejs Phone Number Hint API to biblioteka korzystająca z Usług Google Play, która umożliwia bezproblemowe wyświetlanie numeru telefonu użytkownika (opartego na karcie SIM) jako wskazówki.

Oto niektóre z zalet korzystania ze wskazówek dotyczących numeru telefonu:

  • Nie są wymagane żadne dodatkowe prośby o uprawnienia
  • Wyeliminuje konieczność ręcznego wpisywania numeru telefonu przez użytkownika.
  • Nie jest potrzebne konto Google
  • Nie są bezpośrednio powiązane 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.2.0'
  }

Jak to działa

Interfejs Phone Number Hint API inicjuje proces za pomocą PendingIntent. Po uruchomieniu intencji PendingIntent pojawi się interfejs użytkownika z listą wszystkich numerów telefonów (wykorzystujących kartę SIM). Użytkownik może wybrać numer telefonu, którego chce użyć, lub anulować ten proces. Wybrany numer telefonu zostanie następnie udostępniony deweloperowi do pobrania z Intent.

Interfejs i ustawienia podpowiedzi dotyczących numerów telefonów.
Rysunek 1. Interfejs i ustawienia wskazówek dotyczących numerów telefonów

Tworzenie obiektu GetPhoneNumbeHintIntentRequest

Zacznij od utworzenia obiektu GetPhoneNumberHintIntentRequest za pomocą udostępnionej metody GetPhoneNumberHintIntentRequest.Builder(). Za pomocą tego obiektu żądania można następnie uzyskać Intent, aby uruchomić procedurę 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 w poprzednim obiekcie GetPhoneNumberHintIntentRequest, aby pobrać PendingIntent w celu zainicjowania procedury wskazówek dotyczących 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);
  });

Pobieranie numeru telefonu

Podaj Intent pod numer 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);
              }
          }
  });