Począwszy od Androida 15 Beta 2, w połączeniu z androidx.credentials:1.5.0-alpha01, deweloperzy mogą łączyć konkretne widoki, takie jak pola nazwy użytkownika lub hasła, z żądaniami Credential Manager. Gdy użytkownik skupi się na jednym z tych widoków, do Menedżera danych logowania zostanie wysłane odpowiednie żądanie. Uzyskane dane logowania są agregowane u dostawców i wyświetlane w interfejsach autouzupełniania, takich jak sugestie wbudowane w klawiaturę lub sugestie w menu. Tej funkcji można użyć jako rozwiązania zastępczego, gdy użytkownicy przypadkowo zamkną selektor konta Menedżera danych logowania, a następnie klikną odpowiednie pola.
Preferowanym punktem końcowym dla deweloperów, którzy chcą korzystać z tej funkcji, jest biblioteka Jetpack androidx.credentials.
Rysunek 1. Wyniki autouzupełniania z danymi logowania przy użyciu hasła, klucza dostępu i funkcji Zaloguj się przez Google.
Implementacja
Aby używać Menedżera danych logowania do wyświetlania danych logowania w wynikach autouzupełniania, użyj standardowej implementacji do utworzenia GetCredentialRequest, a następnie ustaw go w odpowiednich widokach. Odpowiedź jest obsługiwana w ten sam sposób, niezależnie od tego, czy pochodzi z wywołania interfejsu API getCredential czy z PendingGetCredentialRequest, jak pokazano w tym przykładzie.
Najpierw utwórz obiekt 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)
)
Następnie wywołaj interfejs API getCredential. Spowoduje to wyświetlenie selektora Credential Manager.
coroutineScope {
try {
val result = credentialManager.getCredential(
context = activityContext, // Use an activity-based context.
request = getCredRequest
)
handleSignIn(result)
} catch (e: GetCredentialException) {
handleFailure(e)
}
}
Na koniec włącz autouzupełnianie. Ustaw getCredRequest na odpowiednie widoki (np. username, password), aby włączyć wyniki danych logowania w autouzupełnianiu, gdy użytkownik wchodzi w interakcję z tymi widokami.
usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest
) { response ->
handleSignIn(response)
}
passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest
) { response ->
handleSignIn(response)
}