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
.

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