Interfejs Phone Number Hint API, biblioteka oparta na Usługach Google Play, umożliwia łatwe wyświetlanie numerów telefonów użytkownika (opartych na karcie SIM) jako podpowiedzi.
Korzyści z używania interfejsu Phone Number Hint API:
- Nie są wymagane żadne dodatkowe prośby o uprawnienia.
- Użytkownik nie musi ręcznie wpisywać numeru telefonu.
- Nie jest wymagane konto Google.
- Nie jest bezpośrednio powiązany z procesami logowania i rejestracji.
- Większa obsługa wersji Androida w porównaniu z autouzupełnianiem.
Jak to działa
Interfejs Phone Number Hint API wykorzystuje PendingIntent
do inicjowania procesu. Po uruchomieniu PendingIntent użytkownik zobaczy interfejs z listą wszystkich numerów telefonów (opartych na karcie SIM). Użytkownik może wybrać numer telefonu, którego chce użyć, lub anulować proces.
Wybrany numer telefonu będzie dostępny dla dewelopera do
pobrania z Intent.
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.6.0'
}
Tworzenie obiektu GetPhoneNumberHintIntentRequest
Zacznij od utworzenia obiektu GetPhoneNumberHintIntentRequest za pomocą
podanej metody GetPhoneNumberHintIntentRequest.Builder(). Ten obiekt żądania może być używany do uzyskania Intent do rozpoczęcia procesu podpowiedzi numeru telefonu.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Wysyłanie prośby o podpowiedź numeru telefonu
Aby pobrać PendingIntent do rozpoczęcia procesu podpowiedzi numeru telefonu, wywołaj SignInClient.getPhoneNumberHintIntent(),
przekazując poprzedni obiekt GetPhoneNumberHintIntentRequest,
.
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
ActivityResultLauncherphoneNumberHintIntentResultLauncher = ... 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
Aby pobrać numer telefonu, przekaż Intent do SignInClient.getPhoneNumberFromIntent.
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
ActivityResultLauncherphoneNumberHintIntentResultLauncher = 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); } } });