Kể từ Android 15 Beta 2, khi kết hợp với androidx.credentials:1.5.0-alpha01, nhà phát triển có thể liên kết các khung hiển thị cụ thể như trường tên người dùng hoặc mật khẩu với các yêu cầu của Trình quản lý thông tin xác thực. Khi người dùng tập trung vào một trong những khung hiển thị này, yêu cầu tương ứng sẽ được gửi đến Trình quản lý thông tin xác thực. Thông tin đăng nhập thu được sẽ được tổng hợp trên nhiều nhà cung cấp và hiển thị trong giao diện người dùng tự động điền, chẳng hạn như đề xuất cùng dòng trên bàn phím hoặc đề xuất thả xuống. Bạn có thể dùng tính năng này làm phương án dự phòng khi người dùng vô tình đóng trình chọn tài khoản của Trình quản lý thông tin xác thực rồi nhấn vào các trường có liên quan.
Thư viện Jetpack androidx.credentials là điểm cuối mà nhà phát triển nên dùng cho tính năng này.
Hình 1: Kết quả tự động điền thông tin xác thực bằng mật khẩu, khoá truy cập và tính năng Đăng nhập bằng Google.
Triển khai
Để sử dụng Trình quản lý thông tin xác thực nhằm hiển thị thông tin đăng nhập trong kết quả tự động điền, hãy sử dụng chế độ triển khai tiêu chuẩn để tạo GetCredentialRequest
rồi đặt chế độ này thành các khung hiển thị có liên quan. Việc xử lý phản hồi là như nhau, cho dù phản hồi đến từ lệnh gọi API getCredential
hay PendingGetCredentialRequest
, như minh hoạ trong ví dụ sau.
Trước tiên, hãy tạo một 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)
)
Tiếp theo, hãy gọi API getCredential
. Thao tác này sẽ hiển thị bộ chọn Trình quản lý thông tin xác thực.
coroutineScope {
try {
val result = credentialManager.getCredential(
context = activityContext, // Use an activity-based context.
request = getCredRequest
)
handleSignIn(result);
} catch (e: GetCredentialException) {
handleFailure(e);
}
}
Cuối cùng, hãy bật tính năng tự động điền. Đặt getCredRequest
thành các khung hiển thị có liên quan (chẳng hạn như username, password
) để bật kết quả thông tin xác thực trong tính năng tự động điền khi người dùng tương tác với các khung hiển thị này.
usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest) { response -> handleSignIn(response)
}
passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest) { response -> handleSignIn(response)
}