Sugerencia de número de teléfono

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

La API de Phone Number Hint, una biblioteca con tecnología de Servicios de Google Play, proporciona una forma sencilla de mostrar los números de teléfono del usuario (basados en SIM) como sugerencia.

Estos son algunos de los beneficios de usar la Sugerencia de número de teléfono:

  • 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á directamente vinculado a los flujos de trabajo de acceso o registro.
  • Mayor compatibilidad con las 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 del 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:20.4.1'
  }

Cómo funciona

La API de Phone Number Hint usa PendingIntent para iniciar el flujo. Una vez que se inicie el PendingIntent, el usuario verá una IU con una lista de todos los números de teléfono (basados en SIM). Luego, el usuario puede elegir un número de teléfono que quiera usar o cancelar el flujo. El número de teléfono seleccionado estará disponible para que el desarrollador lo recupere desde el Intent.

IU y configuración de la sugerencia de número de teléfono.
Figura 1: IU y configuración de la sugerencia de número de teléfono

Cómo crear un objeto GetPhoneNumbeHintIntentRequest

Para comenzar, crea un objeto GetPhoneNumberHintIntentRequest con el método GetPhoneNumberHintIntentRequest.Builder() proporcionado. Este objeto de solicitud se puede usar para obtener un Intent a fin de iniciar el flujo de sugerencia de número de teléfono.

Kotlin

val request: GetPhoneNumberHintIntentRequest = GetPhoneNumberHintIntentRequest.builder().build()

Java

GetPhoneNumberHintIntentRequest request = GetPhoneNumberHintIntentRequest.builder().build();

Solicitud de sugerencia de número de teléfono

Llama a SignInClient.getPhoneNumberHintIntent() y pasa el objeto GetPhoneNumberHintIntentRequest anterior para recuperar el PendingIntent a fin de iniciar el flujo de Sugerencia de número de teléfono.

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

ActivityResultLauncher phoneNumberHintIntentResultLauncher = ...

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 Intent a SignInClient.getPhoneNumberFromIntent para recuperar el número de teléfono.

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

ActivityResultLauncher phoneNumberHintIntentResultLauncher =
  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);
              }
          }
  });