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 del Administrador de credenciales. Cuando el usuario se enfoca en una de estas vistas, la solicitud correspondiente se envía al Administrador de credenciales. Las credenciales resultantes se agregan en todos los proveedores y se muestran en las IU de Autocompletar, como las sugerencias intercaladas del teclado o las sugerencias desplegables. Esta función se puede usar como resguardo cuando los usuarios rechazan accidentalmente el selector de cuentas del Administrador de credenciales y, luego, presionan los campos relevantes.
La biblioteca androidx.credentials de Jetpack es el extremo preferido que los desarrolladores deben usar para esta función.
Figura 1: Resultados de Autocompletar con credenciales mediante contraseña, llave de acceso y Acceder con Google
Implementación
Para usar el Administrador de credenciales y mostrar credenciales en los resultados de autocompletado, usa la implementación estándar para compilar un GetCredentialRequest
y, luego, configúralo en las vistas relevantes. El control de la respuesta es el mismo, ya sea que la respuesta provenga de la llamada a la API de getCredential
o de PendingGetCredentialRequest
, como se muestra en el siguiente ejemplo.
Primero, construye un GetCredentialRequest
:
Kotlin
// 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) )
Java
// Retrieves the user's saved password for your app. GetPasswordOption getPasswordOption = new GetPasswordOption(); // Get a passkey from the user's public key credential provider. GetPublicKeyCredentialOption getPublicKeyCredentialOption = new GetPublicKeyCredentialOption(requestJson); GetCredentialRequest getCredRequest = new GetCredentialRequest( Arrays.asList(getPasswordOption, getPublicKeyCredentialOption) );
A continuación, llama a la API de getCredential
. Se mostrará el selector del Administrador de credenciales.
Kotlin
coroutineScope.launch { try { val result = credentialManager.getCredential( context = activityContext, // Use an activity-based context. request = getCredRequest ) handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } }
Java
coroutineScope.launch(new CoroutineScopeRunnable() { @Override public void run(@NonNull CoroutineScope scope) { try { GetCredentialResponse result = credentialManager.getCredential( activityContext, // Use an activity-based context. getCredRequest ); handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } } });
Por último, habilita la experiencia de Autocompletar. Establece el getCredRequest
en vistas relevantes (como username, password
) para habilitar los resultados de credenciales en Autocompletar cuando el usuario interactúa con estas vistas.
Kotlin
import androidx.credentials.PendingGetCredentialRequest usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) } passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) }
Java
import androidx.credentials.CredentialManagerViewHandler; import androidx.credentials.PendingGetCredentialRequest; CredentialManagerViewHandler.setPendingGetCredentialRequest( usernameEditText, new PendingGetCredentialRequest( getCredRequest, result -> { handleSignIn(result); return null; } ) CredentialManagerViewHandler.setPendingGetCredentialRequest( passwordEditText, new PendingGetCredentialRequest( getCredRequest, result -> { handleSignIn(result); return null; } )