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 Gestore delle credenziali. 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 provider e visualizzate nelle UI di compilazione automatica, ad esempio nei suggerimenti in linea della tastiera o nei suggerimenti a discesa. Questa funzionalità può essere utilizzata come fallback quando gli utenti chiudono accidentalmente il selettore dell'account di Gestore delle credenziali e poi toccano i campi pertinenti.
La libreria Jetpack androidx.credentials è l'endpoint preferito che gli sviluppatori possono utilizzare per questa funzionalità.
Figura 1: risultati della compilazione automatica con credenziali che utilizzano password, passkey e
Accedi con Google.
Implementazione
Per utilizzare Credential Manager per mostrare le credenziali nei risultati della compilazione automatica, utilizza l'
implementazione standard per creare un GetCredentialRequest e poi impostarlo
nelle 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)
)
Poi, chiama l'API getCredential. Viene visualizzato il selettore di Gestore delle credenziali.
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 nelle visualizzazioni pertinenti (ad es. 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)
}