Od wersji Androida 15 Beta 2 w połączeniu z biblioteką androidx.credentials:1.5.0-alpha01 deweloperzy mogą łączyć konkretne widoki, np. pola nazwy użytkownika lub hasła, z żądaniami Menedżera danych logowania. Gdy użytkownik skupi się na jednym z tych widoków, do Menedżera danych logowania zostanie wysłane odpowiednie żądanie. Wynikowe dane logowania są agregowane w różnych usługach i wyświetlane w interfejsach autouzupełniania, np. w sugestiach wbudowanych w klawiaturę lub w sugestiach w menu. Ta funkcja może być używana jako rozwiązanie awaryjne, gdy użytkownicy przypadkowo zamkną selektor kont Menedżera danych logowania, a następnie klikną odpowiednie pola.
Biblioteka Jetpack androidx.credentials jest preferowanym punktem końcowym, z którego deweloperzy mogą korzystać w przypadku tej funkcji.
Ilustracja 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. Obsługa odpowiedzi jest taka sama niezależnie od tego, czy pochodzi ona z wywołania interfejsu API getCredential
czy z wywołania PendingGetCredentialRequest
, jak pokazano w tym przykładzie.
Najpierw utwórz 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 getCredential
API. Wyświetli się selektor Menedżera danych logowania.
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 wartość 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)
}