Phone Number Hint API, biblioteka z Usługami Google Play, umożliwia płynne wyświetlanie numerów telefonu użytkownika (opartych na karcie SIM).
Zalety korzystania z podpowiedzi dotyczących numeru telefonu:
- Nie potrzeba żadnych dodatkowych uprawnień
- Eliminuje potrzebę ręcznego wpisywania numeru telefonu.
- Nie potrzebujesz konta Google
- Nie są bezpośrednio powiązane z procesami logowania i rejestracji
- Lepsza obsługa wersji Androida niż autouzupełnianie
Zanim zaczniesz
Aby przygotować aplikację, wykonaj czynności opisane w poniższych sekcjach.
Konfigurowanie aplikacji
W pliku build.gradle
na poziomie projektu dodaj repozytorium Maven Google i buildscript
oraz allprojects
:
buildscript {
repositories {
google()
mavenCentral()
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
Dodaj zależność między Usługami Google Play a zależnością interfejsu Phone Number Hint API do pliku kompilacji Gradle, który zazwyczaj jest app/build.gradle
:
dependencies {
implementation 'com.google.android.gms:play-services-auth:20.2.0'
}
Jak to działa
Interfejs Phone Number Hint API używa PendingIntent
do inicjowania procesu. Po uruchomieniu PendingIntent użytkownik zobaczy interfejs z listą wszystkich numerów telefonów (na karcie SIM). Użytkownik może następnie wybrać numer telefonu, z którego chce korzystać, lub anulować procedurę.
Wybrany numer telefonu zostanie udostępniony deweloperowi, aby mógł go pobrać z Intent
.

Tworzenie obiektu GetPhoneNumbeHintIntentRequest
Zacznij od utworzenia obiektu GetPhoneNumberHintIntentRequest
, używając podanej metody GetPhoneNumberHintIntentRequest.Builder()
. Tego obiektu żądania można użyć, aby pobrać instrukcję Intent
, która rozpoczyna przepływ numeru telefonu.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Pytanie o numer telefonu
Wywołanie SignInClient.getPhoneNumberHintIntent()
z przekazaniem poprzedniego obiektu GetPhoneNumberHintIntentRequest
w celu pobrania PendingIntent
w celu zainicjowania przepływu numeru telefonu.
Kotlin
val phoneNumberHintIntentResultLauncher: ActivityResultLauncher = ... Identity.signInClient(activity) .getPhoneNumberHintIntent(request) .addOnSuccessListener( try { phoneNumberHintIntentResultLauncher.launch(request.getIntentSender()) } 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
w SignInClient.getPhoneNumberFromIntent
, aby pobrać numer telefonu.
Kotlin
val phoneNumberHintIntentResultLauncher: ActivityResultLauncher = registerForActivityResult(StartActivityForResult()) { result -> try { val phoneNumber = Identity.signInClient(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); } } });