A partire da Android 15 Beta 2, in combinazione con androidx.credentials:1.5.0-alpha01, gli sviluppatori possono collegare visualizzazioni specifiche come i campi nome utente o password alle richieste di Credential Manager. Quando l'utente si concentra su una di queste visualizzazioni, la richiesta corrispondente viene inviata a Credential Manager. Le credenziali risultanti vengono aggregate tra i vari fornitori e visualizzate nelle UI di compilazione automatica, ad esempio nei suggerimenti in linea della tastiera o nei suggerimenti dei menu a discesa. Questa funzionalità può essere utilizzata come fallback quando gli utenti chiudono accidentalmente il selettore dell'account di Credential Manager e poi toccano i campi pertinenti.
La libreria Jetpack androidx.credentials è l'endpoint preferito per gli sviluppatori da utilizzare per questa funzionalità.
Figura 1: risultati della compilazione automatica con le credenziali che utilizzano password, passkey e
Accedi con Google.
Implementazione
Per utilizzare Credential Manager per mostrare le credenziali nei risultati di compilazione automatica, utilizza l'implementazione standard per creare un GetCredentialRequest
e poi impostalo sulle visualizzazioni pertinenti. La gestione delle risposte è la stessa, indipendentemente dal fatto che la risposta
provenga dalla chiamata API getCredential
o da PendingGetCredentialRequest
, come
mostrato nell'esempio seguente.
Innanzitutto, crea 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)
)
Successivamente, chiama l'API getCredential
. Viene visualizzato il selettore di Credential Manager.
coroutineScope {
try {
val result = credentialManager.getCredential(
context = activityContext, // Use an activity-based context.
request = getCredRequest
)
handleSignIn(result);
} catch (e: GetCredentialException) {
handleFailure(e);
}
}
Infine, attiva l'esperienza di compilazione automatica. Imposta getCredRequest
sulle visualizzazioni pertinenti (ad esempio username, password
) per attivare i risultati delle credenziali nella compilazione automatica quando l'utente interagisce con queste visualizzazioni.
usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest) { response -> handleSignIn(response)
}
passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest) { response -> handleSignIn(response)
}