Cómo integrar Credential Manager con la función Autocompletar

A partir de la versión beta 2 de Android 15, junto con androidx.credentials:1.5.0-alpha01, los desarrolladores pueden vincular vistas específicas, como campos de nombre de usuario o contraseña, con solicitudes de Credential Manager. Cuando el usuario se enfoca en una de estas vistas, se envía la solicitud correspondiente a Credential Manager. Las credenciales resultantes se agregan en todos los proveedores y se muestran en las IU de autocompletado, como las sugerencias intercaladas del teclado o las sugerencias desplegables. Esta función se puede usar como alternativa cuando los usuarios descartan accidentalmente el selector de cuentas de Credential Manager y, luego, presionan los campos correspondientes.

La biblioteca de Jetpack androidx.credentials es el extremo preferido para que los desarrolladores usen esta función.

Ilustración que muestra las credenciales en los resultados de autocompletado
Figura 1: Resultados de Autocompletar con credenciales que usan contraseña, llave de acceso y Acceder con Google.

Implementación

Para usar Credential Manager y mostrar credenciales en los resultados de autocompletar, usa la implementación estándar para compilar un GetCredentialRequest y, luego, configúralo en las vistas pertinentes. El control de la respuesta es el mismo, ya sea que provenga de la llamada a la API de getCredential o de PendingGetCredentialRequest, como se muestra en el siguiente ejemplo.

Primero, construye un GetCredentialRequest:

// Retrieves the user's saved password for your app.
val getPasswordOption = GetPasswordOption()

// Get a passkey from the user's public key credential provider.
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
  requestJson = requestJson
)

val getCredRequest = GetCredentialRequest(
  listOf(getPasswordOption, getPublicKeyCredentialOption)
)

A continuación, llama a la API de getCredential. Se mostrará el selector del Administrador de credenciales.

coroutineScope {
  try {
    val result = credentialManager.getCredential(
      context = activityContext, // Use an activity-based context.
      request = getCredRequest
    )
    handleSignIn(result);
  } catch (e: GetCredentialException) {
    handleFailure(e);
  }
}

Por último, habilita la experiencia de autocompletar. Establece getCredRequest en vistas relevantes (como username, password) para habilitar los resultados de credenciales en el autocompletar cuando el usuario interactúa con estas vistas.

usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
  getCredRequest) { response -> handleSignIn(response)
}

passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
  getCredRequest) { response -> handleSignIn(response)
}