The Phone Number Hint API, a library powered by Google Play services, provides a frictionless way to show a user’s (SIM-based) phone numbers as a hint.
The benefits to using Phone Number Hint include the following:
- No additional permission requests are needed
- Eliminates the need for the user to manually type in the phone number
- No Google account is needed
- Not directly tied to sign in/up workflows
- Wider support for Android versions compared to Autofill
Before you begin
To prepare your app, complete the steps in the following sections.
Configure your app
In your project-level build.gradle
file, include Google's Maven
repository in both your buildscript
and allprojects
sections:
buildscript {
repositories {
google()
mavenCentral()
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
Add the Google Play services
dependency for the Phone Number Hint API to your
module's Gradle build file,
which is commonly app/build.gradle
:
dependencies {
implementation 'com.google.android.gms:play-services-auth:20.2.0'
}
How it works
The Phone Number Hint API utilizes a PendingIntent
to initiate the flow. Once the PendingIntent has been launched the user will be
presented with a UI, listing out all (SIM-based) phone numbers. The user can
then choose to select a phone number they would like to use or cancel the flow.
The selected phone number will then be made available to the developer to
retrieve from the Intent
.

Create a GetPhoneNumbeHintIntentRequest object
Start by creating a GetPhoneNumberHintIntentRequest
object using the
provided GetPhoneNumberHintIntentRequest.Builder()
method. This request object can then be used to get an Intent
to start the
Phone Number Hint flow.
Kotlin
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
Java
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Requesting Phone Number Hint
Call SignInClient.getPhoneNumberHintIntent()
,
passing in the previous GetPhoneNumberHintIntentRequest
object,
to retrieve the PendingIntent
to initiate the Phone Number Hint flow.
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); });
Retrieving the Phone Number
Pass in the Intent
to SignInClient.getPhoneNumberFromIntent
to retrieve the phone number.
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); } } });