À partir de la version bêta 2 d'Android 15 associée à androidx.credentials:1.5.0-alpha01, les développeurs peuvent associer des vues spécifiques, telles que des champs de nom d'utilisateur ou de mot de passe, aux requêtes du Gestionnaire d'identifiants. Lorsque l'utilisateur met en surbrillance l'une de ces vues, la requête correspondante est envoyée au Gestionnaire d'identifiants. Les identifiants obtenus sont agrégés entre les fournisseurs et affichés dans les UI de saisie automatique, telles que les suggestions intégrées au clavier ou les suggestions des menus déroulants. Cette fonctionnalité peut être utilisée comme solution de secours lorsque les utilisateurs ignorent accidentellement le sélecteur de compte Gestionnaire d'identifiants, puis appuient sur les champs concernés.
La bibliothèque androidx.credentials Jetpack est le point de terminaison recommandé pour les développeurs pour cette fonctionnalité.
Figure 1:Résultats de la saisie automatique avec des identifiants utilisant un mot de passe, une clé d'accès et Se connecter avec Google.
Implémentation
Pour utiliser le Gestionnaire d'identifiants pour afficher les identifiants dans les résultats de saisie semi-automatique, utilisez l'implémentation standard pour créer un GetCredentialRequest
, puis définissez-le sur les vues pertinentes. La gestion des réponses est la même, que la réponse provienne de l'appel d'API getCredential
ou de PendingGetCredentialRequest
, comme illustré dans l'exemple suivant.
Commencez par créer un 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) );
Appelez ensuite l'API getCredential
. Le sélecteur du Gestionnaire d'identifiants s'affiche.
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); } } });
Enfin, activez l'expérience de saisie automatique. Définissez getCredRequest
sur des vues pertinentes (telles que username, password
) pour activer les résultats des identifiants dans le remplissage automatique lorsque l'utilisateur interagit avec ces vues.
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; } )