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 thành phần 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 các chế độ xem 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 xác thực thu được được tổng hợp trên các 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 trong trình đơn thả xuống. Bạn có thể sử 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 bộ chọn tài khoản Trình quản lý thông tin xác thực, sau đó nhấn vào các trường có liên quan.
Thư viện androidx.credentials của Jetpack là điểm cuối ưu tiên mà nhà phát triển nên sử 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 xác thực trong kết quả tự động điền, hãy sử dụng phương thức triển khai tiêu chuẩn để tạo GetCredentialRequest
, sau đó đặt GetCredentialRequest
đó thành các thành phần hiển thị có liên quan. Cách xử lý phản hồi cũng giống 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
:
Kotlin
// 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) )
Java
// Retrieves the user's saved password for your app. GetPasswordOption getPasswordOption = new GetPasswordOption(); // Get a passkey from the user's public key credential provider. GetPublicKeyCredentialOption getPublicKeyCredentialOption = new GetPublicKeyCredentialOption(requestJson); GetCredentialRequest getCredRequest = new GetCredentialRequest( Arrays.asList(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.
Kotlin
coroutineScope.launch { try { val result = credentialManager.getCredential( context = activityContext, // Use an activity-based context. request = getCredRequest ) handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } }
Java
coroutineScope.launch(new CoroutineScopeRunnable() { @Override public void run(@NonNull CoroutineScope scope) { try { GetCredentialResponse result = credentialManager.getCredential( activityContext, // Use an activity-based context. getCredRequest ); handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } } });
Cuối cùng, hãy bật trải nghiệm tự động điền. Đặt getCredRequest
thành các thành phần hiển thị 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 thành phần hiển thị này.
Kotlin
import androidx.credentials.PendingGetCredentialRequest usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) } passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) }
Java
import androidx.credentials.CredentialManagerViewHandler; import androidx.credentials.PendingGetCredentialRequest; CredentialManagerViewHandler.setPendingGetCredentialRequest( usernameEditText, new PendingGetCredentialRequest( getCredRequest, result -> { handleSignIn(result); return null; } ) CredentialManagerViewHandler.setPendingGetCredentialRequest( passwordEditText, new PendingGetCredentialRequest( getCredRequest, result -> { handleSignIn(result); return null; } )