Credential Manager in Autofill einbinden

Ab Android 15 Beta 2 können Entwickler in Kombination mit androidx.credentials:1.5.0-alpha01 bestimmte Ansichten wie Nutzername- oder Passwortfelder mit Credential Manager-Anfragen verknüpfen. Wenn der Nutzer den Fokus auf eine dieser Ansichten legt, wird die entsprechende Anfrage an Credential Manager gesendet. Die resultierenden Anmeldedaten werden anbieterübergreifend zusammengefasst und in Autofill-Benutzeroberflächen wie Inline-Vorschlägen auf der Tastatur oder Drop-down-Vorschlägen angezeigt. Diese Funktion kann als Fallback verwendet werden, wenn Nutzer die Kontoauswahl des Credential Manager versehentlich schließen und dann auf die entsprechenden Felder tippen.

Die Jetpack androidx.credentials-Bibliothek ist der bevorzugte Endpunkt für Entwickler, die diese Funktion verwenden möchten.

Abbildung, die Anmeldedaten in Autofill-Ergebnissen zeigt
Abbildung 1:Autofill-Ergebnisse mit Anmeldedaten mit Passwort, Passkey und „Mit Google anmelden“.

Implementierung

Wenn Sie den Credential Manager verwenden möchten, um Anmeldedaten in den Ergebnissen der automatischen Vervollständigung anzuzeigen, verwenden Sie die Standardimplementierung, um ein GetCredentialRequest zu erstellen, und legen Sie es dann für die relevanten Ansichten fest. Die Verarbeitung der Antwort ist unabhängig davon, ob die Antwort vom getCredential-API-Aufruf oder vom 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. Daraufhin 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 schließlich die Funktion zum automatischen Ausfüllen. Legen Sie getCredRequest auf relevante Ansichten (z. B. username, password) fest, damit Anmeldedaten in der automatischen Vervollständigung angezeigt werden, wenn der Nutzer mit diesen Ansichten interagiert.

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

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