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 se concentra em uma dessas visualizações, a solicitação correspondente é enviada ao Credential Manager. As credenciais resultantes são agregadas entre os provedores e exibidas nas interfaces de preenchimento automático, como sugestões inline do teclado ou sugestões do menu suspenso. 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 Jetpack androidx.credentials é o endpoint preferencial para desenvolvedores usarem com esse recurso.
Figura 1:resultados de 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
nas visualizações relevantes. O processamento de resposta é o mesmo, seja
da chamada de API getCredential
ou da PendingGetCredentialRequest
, conforme
mostrado no exemplo abaixo.
Primeiro, crie um GetCredentialRequest
:
Kotlin
// 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) )
Java
// Retrieves the user's saved password for your app. GetPasswordOption getPasswordOption = new GetPasswordOption(); // Get a passkey from the user's public key credential provider. GetPublicKeyCredentialOption getPublicKeyCredentialOption = new GetPublicKeyCredentialOption(requestJson); GetCredentialRequest getCredRequest = new GetCredentialRequest( Arrays.asList(getPasswordOption, getPublicKeyCredentialOption) );
Em seguida, chame a API getCredential
. Isso mostra o seletor do Gerenciador de credenciais.
Kotlin
coroutineScope.launch { try { val result = credentialManager.getCredential( context = activityContext, // Use an activity-based context. request = getCredRequest ) handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } }
Java
coroutineScope.launch(new CoroutineScopeRunnable() { @Override public void run(@NonNull CoroutineScope scope) { try { GetCredentialResponse result = credentialManager.getCredential( activityContext, // Use an activity-based context. getCredRequest ); handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } } });
Por fim, ative a experiência de preenchimento automático. Defina o getCredRequest
para visualizações
relevantes (como username, password
) para ativar os resultados de preenchimento automático de credenciais
quando o usuário interagir com essas visualizações.
Kotlin
import androidx.credentials.PendingGetCredentialRequest usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) } passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) }
Java
import androidx.credentials.CredentialManagerViewHandler; import androidx.credentials.PendingGetCredentialRequest; CredentialManagerViewHandler.setPendingGetCredentialRequest( usernameEditText, new PendingGetCredentialRequest( getCredRequest, result -> { handleSignIn(result); return null; } ) CredentialManagerViewHandler.setPendingGetCredentialRequest( passwordEditText, new PendingGetCredentialRequest( getCredRequest, result -> { handleSignIn(result); return null; } )