Ab Android 15 Beta 2 können Entwickler mit androidx.credentials:1.5.0-alpha01 bestimmte Ansichten wie Nutzernamen- oder Passwortfelder mit Anfragen des Anmeldedaten-Managers verknüpfen. Wenn der Nutzer den Fokus auf eine dieser Ansichten legt, wird die entsprechende Anfrage an den Anmeldedaten-Manager gesendet. Die resultierenden Anmeldedaten werden anbieterübergreifend zusammengefasst und in Autofill-UIs angezeigt, z. B. in Inline-Vorschlägen auf der Tastatur oder in Drop-down-Vorschlägen. Diese Funktion kann als Fallback verwendet werden, wenn Nutzer die Kontoauswahl des Anmeldedaten-Managers versehentlich schließen und dann auf die entsprechenden Felder tippen.
Die Jetpack-Bibliothek androidx.credentials ist der bevorzugte Endpunkt für Entwickler, die diese Funktion verwenden möchten.
Abbildung 1:Autofill-Ergebnisse mit Anmeldedaten mit Passwort, Passkey und „Über Google anmelden“.
Implementierung
Wenn Sie mit dem Anmeldedaten-Manager Anmeldedaten in Autofill-Ergebnissen anzeigen lassen möchten, erstellen Sie mit der Standardimplementierung ein GetCredentialRequest
und legen Sie es dann auf die entsprechenden Ansichten fest. Die Antwort wird gleich behandelt, unabhängig davon, ob sie vom getCredential
API-Aufruf oder von PendingGetCredentialRequest
stammt, wie im folgenden Beispiel gezeigt.
Erstellen Sie zuerst eine 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) );
Rufen Sie als Nächstes die getCredential
API auf. Daraufhin wird die Auswahl des Anmeldedaten-Managers angezeigt.
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); } } });
Aktivieren Sie abschließend die Funktion zum automatischen Ausfüllen. Legen Sie die getCredRequest
auf relevante Ansichten wie username, password
fest, um die automatische Vervollständigung von Anmeldedaten zu aktivieren, wenn der Nutzer mit diesen Ansichten interagiert.
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; } )