A partir do Android 15 Beta 2, em conjunto com androidx.credentials:1.5.0-alpha01, os desenvolvedores podem vincular visualizações específicas, como campos de nome de usuário ou senha, a solicitações do Gerenciador de credenciais. Quando o usuário foca em uma dessas visualizações, a solicitação correspondente é enviada ao Gerenciador de credenciais. As credenciais resultantes são agregadas entre os provedores e exibidas em interfaces de preenchimento automático, como sugestões in-line de teclado ou sugestões suspensas. Esse recurso pode ser usado como substituto quando os usuários dispensam acidentalmente o seletor de contas do Gerenciador de credenciais e tocam nos campos relevantes.
A biblioteca androidx.credentials do Jetpack é o endpoint preferencial para os desenvolvedores usarem esse recurso.
Figura 1:resultados do preenchimento automático com credenciais usando senha, chave de acesso e
Fazer login com o Google.
Implementação
Para usar o Gerenciador de credenciais para mostrar credenciais nos resultados de preenchimento automático, use a
implementação padrão para criar um GetCredentialRequest e, em seguida, defina-o
para as visualizações relevantes. O processamento da resposta é o mesmo, seja ela
proveniente da chamada de API getCredential ou PendingGetCredentialRequest, como
mostrado no exemplo a seguir.
Primeiro, crie um 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)
)
Em seguida, chame a API getCredential. Isso mostra o seletor do Credential Manager.
coroutineScope {
try {
val result = credentialManager.getCredential(
context = activityContext, // Use an activity-based context.
request = getCredRequest
)
handleSignIn(result)
} catch (e: GetCredentialException) {
handleFailure(e)
}
}
Por fim, ative a experiência de preenchimento automático. Defina getCredRequest como visualizações
relevantes (como username, password) para ativar os resultados de credenciais no preenchimento automático
quando o usuário interagir com essas visualizações.
usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest
) { response ->
handleSignIn(response)
}
passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest
) { response ->
handleSignIn(response)
}