Credential Manager in Autofill einbinden

Ab Android 15 Beta 2 können Entwickler in Verbindung mit androidx.credentials:1.5.0-alpha01 bestimmte Ansichten wie Felder für Nutzernamen oder Passwörter mit Credential Manager-Anfragen verknüpfen. Wenn der Nutzer eine dieser Ansichten fokussiert, wird die entsprechende Anfrage an den Credential Manager gesendet. Die resultierenden Anmeldedaten werden über alle Anbieter hinweg zusammengefasst und in Benutzeroberflächen für automatisches Ausfüllen 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 Credential Managers versehentlich schließen und dann auf die entsprechenden Felder tippen.

Die Jetpack androidx.credentials-Bibliothek ist der bevorzugte Endpunkt für Entwickler, um diese Funktion zu nutzen.

Abbildung mit Anmeldedaten in den Ergebnissen für automatisches Ausfüllen
Abbildung 1:Autofill-Ergebnisse mit Anmeldedaten, die ein Passwort, einen Passkey und „Über Google anmelden“ verwenden.

Implementierung

Wenn Sie den Credential Manager verwenden möchten, um Anmeldedaten in den Ergebnissen für automatisches Ausfüllen anzuzeigen, verwenden Sie die Standardimplementierung, um eine GetCredentialRequest zu erstellen, und legen Sie sie dann für die relevanten Ansichten fest. Die Antwortverarbeitung ist dieselbe, unabhängig davon, ob die Antwort vom API-Aufruf getCredential oder PendingGetCredentialRequest stammt, wie im folgenden Beispiel gezeigt.

Erstellen Sie zuerst ein 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)
)

Rufen Sie als Nächstes die getCredential API auf. Dadurch wird die Auswahl für den Credential Manager angezeigt.

coroutineScope {
    try {
        val result = credentialManager.getCredential(
            context = activityContext, // Use an activity-based context.
            request = getCredRequest
        )
        handleSignIn(result)
    } catch (e: GetCredentialException) {
        handleFailure(e)
    }
}

Aktivieren Sie abschließend die Autofill-Funktion. Setzen Sie getCredRequest auf relevante Ansichten (z. B. username, password), um die Anzeige von Anmeldedaten in der Autofill-Funktion zu aktivieren, wenn der Nutzer mit diesen Ansichten interagiert.

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

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