將 Credential Manager 與自動填入功能整合

從 Android 15 Beta 2 開始,搭配 androidx.credentials:1.5.0-alpha01,開發人員可以將使用者名稱或密碼欄位等特定檢視畫面,連結至 Credential Manager 要求。當使用者聚焦於其中一個檢視畫面時,系統會將對應的要求傳送至 Credential Manager。產生的憑證會彙整至各個供應商,並顯示在自動填入 UI 中,例如鍵盤內嵌建議或下拉式建議。如果使用者不小心關閉 Credential Manager 帳戶選取器,然後輕觸相關欄位,這項功能可做為備用方案。

Jetpack androidx.credentials 程式庫是開發人員使用這項功能時的首選端點。

插圖:自動填入結果中顯示憑證
圖 1:使用密碼、密碼金鑰和「使用 Google 帳戶登入」功能,自動填入憑證。

導入作業

如要使用 Credential Manager 在自動填入結果中顯示憑證,請使用標準實作建構 GetCredentialRequest,然後設定至相關檢視畫面。無論回應來自 getCredential API 呼叫或 PendingGetCredentialRequest,回應處理方式都相同,如以下範例所示。

首先,建構 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)
)

接著,呼叫 getCredential API。系統會顯示 Credential Manager 選取器。

coroutineScope {
    try {
        val result = credentialManager.getCredential(
            context = activityContext, // Use an activity-based context.
            request = getCredRequest
        )
        handleSignIn(result)
    } catch (e: GetCredentialException) {
        handleFailure(e)
    }
}

最後,啟用自動填入功能。將 getCredRequest 設為相關檢視畫面 (例如 username, password),以便在使用者與這些檢視畫面互動時,在自動填入功能中啟用憑證結果。

usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
    getCredRequest
) { response ->
    handleSignIn(response)
}

passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
    getCredRequest
) { response ->
    handleSignIn(response)
}