Od wersji Androida 15 Beta 2 deweloperzy mogą łączyć określone widoki, takie jak pola nazwy użytkownika lub hasła, z żądaniami Credential Manager za pomocą biblioteki androidx.credentials:1.5.0-alpha01. Gdy użytkownik skupi się na jednym z tych widoków, odpowiednie żądanie zostanie wysłane do Menedżera danych logowania. Wynikowe dane logowania są agregowane u różnych dostawców i wyświetlane w interfejsach autouzupełniania, np. w sugestiach wbudowanych w klawiaturę lub w sugestiach z menu. Tej funkcji można używać jako rozwiązania rezerwowego, gdy użytkownicy przypadkowo zamkną selektor konta Credential Manager, a następnie klikną odpowiednie pola.
Biblioteka Jetpack androidx.credentials to preferowany punkt końcowy, z którego deweloperzy mogą korzystać w przypadku tej funkcji.
Rysunek 1: wyniki autouzupełniania z danymi logowania przy użyciu hasła, klucza dostępu i
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, aby utworzyć GetCredentialRequest, a następnie ustawić ją
w odpowiednich widokach. Obsługa odpowiedzi jest taka sama, niezależnie od tego, czy pochodzi ona z wywołania interfejsu API getCredential, czy z 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 API getCredential. Spowoduje to wyświetlenie selektora 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 getCredRequest w odpowiednich widokach (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)
}