La API de Phone Number Hint, una biblioteca con tecnología de los Servicios de Google Play, proporciona una forma sencilla de mostrar los números de teléfono (basados en SIM) de un usuario como una sugerencia.
Entre los beneficios de usar la sugerencia de número de teléfono, se incluyen los siguientes:
- No se necesitan solicitudes de permisos adicionales.
- Elimina la necesidad de que el usuario escriba manualmente el número de teléfono.
- No se necesita una Cuenta de Google
- No están directamente vinculados a los flujos de trabajo de acceso o registro
- Compatibilidad más amplia con versiones de Android en comparación con Autocompletar
Antes de comenzar
Para preparar tu app, completa los pasos que se indican en las siguientes secciones.
Cómo configurar tu app
Agrega la dependencia de los Servicios de Google Play para la API de Phone Number Hint al archivo de compilación de Gradle de tu módulo, que suele ser app/build.gradle
:
apply plugin: 'com.android.application'
...
dependencies {
implementation 'com.google.android.gms:play-services-auth:21.3.0'
}
Cómo funciona
La API de Phone Number Hint usa un PendingIntent
para iniciar el flujo. Una vez que se haya iniciado el PendingIntent, se le mostrará al usuario una IU con una lista de todos los números de teléfono (basados en SIM). Luego, el usuario puede elegir seleccionar un número de teléfono que le gustaría usar o cancelar el flujo.
Luego, el número de teléfono seleccionado estará disponible para que el desarrollador lo recupere de Intent
.

Crea un objeto GetPhoneNumbeHintIntentRequest
Primero, crea un objeto GetPhoneNumberHintIntentRequest
con el método GetPhoneNumberHintIntentRequest.Builder()
proporcionado. Luego, este objeto de solicitud se puede usar para obtener un Intent
que inicie el flujo de sugerencias de números de teléfono.
val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()
GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();
Cómo solicitar una sugerencia de número de teléfono
Llama a SignInClient.getPhoneNumberHintIntent()
y pasa el objeto GetPhoneNumberHintIntentRequest
anterior para recuperar el PendingIntent
y, así, iniciar el flujo de sugerencias de números de teléfono.
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") }
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); });
Cómo recuperar el número de teléfono
Pasa el Intent
a SignInClient.getPhoneNumberFromIntent
para recuperar el número de teléfono.
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") } }
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); } } });