Integrar o Gerenciador de credenciais ao preenchimento automático

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.

Ilustração mostrando credenciais nos resultados de preenchimento automático
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)
}