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

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

La biblioteca androidx.credentials de Jetpack es el extremo preferido que los desarrolladores deben usar para 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 el Administrador de credenciales 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 relevantes. El manejo 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. Esto muestra 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 autocompletado. Establece el getCredRequest en las vistas pertinentes (como username, password) para habilitar los resultados de credenciales en la función de autocompletar cuando el usuario interactúe con estas vistas.

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

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