Integrar o Gerenciador de credenciais ao preenchimento automático

A partir do Android 15 Beta 2, combinado com androidx.credentials:1.5.0-alpha01, os desenvolvedores podem vincular visualizações específicas, como campos de nome de usuário ou senha, com solicitações do Gerenciador de credenciais. Quando o usuário foca em uma dessas visualizações, a solicitação correspondente é enviada ao Credential Manager. As credenciais resultantes são agregadas em todos os provedores e exibidas em interfaces de preenchimento automático, como sugestões inline do teclado ou sugestões suspensas. Esse recurso pode ser usado como alternativa quando os usuários dispensam acidentalmente o seletor de contas do Credential Manager e tocam nos campos relevantes.

A biblioteca Jetpack androidx.credentials é o endpoint preferido para desenvolvedores usarem esse recurso.

Ilustração mostrando credenciais nos resultados do 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 e mostrar credenciais nos resultados do preenchimento automático, use a implementação padrão para criar um GetCredentialRequest e defini-lo nas visualizações relevantes. O processamento da resposta é o mesmo, seja ela da chamada de API getCredential ou do PendingGetCredentialRequest, conforme 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. O seletor do Credential Manager será exibido.

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 o getCredRequest como visualizações relevantes (como username, password) para ativar os resultados de credenciais no preenchimento automático quando o usuário interage com essas visualizações.

usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
  getCredRequest) { response -> handleSignIn(response)
}

passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
  getCredRequest) { response -> handleSignIn(response)
}