Integracja Menedżera danych logowania z autouzupełnianiem

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.

Ilustracja pokazująca dane logowania w wynikach autouzupełniania
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)
}