שילוב של 'מנהל פרטי הכניסה' עם המילוי האוטומטי

החל מגרסת Android 15 Beta 2, בשילוב עם androidx.credentials:1.5.0-alpha01, מפתחים יכולים לקשר תצוגות ספציפיות כמו שדות של שם משתמש או סיסמה לבקשות של Credential Manager. כשהמשתמש מתמקד באחת מהתצוגות האלה, הבקשה המתאימה נשלחת אל Credential Manager. פרטי הכניסה שמתקבלים נאספים מכל הספקים ומוצגים בממשקי משתמש של מילוי אוטומטי, כמו הצעות במקלדת או הצעות בתפריט נפתח. אפשר להשתמש בתכונה הזו כגיבוי למקרים שבהם המשתמשים סוגרים בטעות את בורר החשבונות של Credential Manager, ואז לוחצים על השדות הרלוונטיים.

הספרייה Jetpack androidx.credentials היא נקודת הקצה המועדפת על המפתחים לשימוש בתכונה הזו.

איור שמראה פרטי כניסה בתוצאות של המילוי האוטומטי
איור 1: תוצאות של מילוי אוטומטי עם פרטי כניסה באמצעות סיסמה, מפתח גישה וכניסה באמצעות חשבון Google.

הטמעה

כדי להשתמש ב-Credential Manager להצגת פרטי כניסה בתוצאות של מילוי אוטומטי, משתמשים בהטמעה הרגילה כדי ליצור GetCredentialRequest ואז מגדירים אותו לתצוגות הרלוונטיות. הטיפול בתגובה זהה, בין אם התגובה מגיעה מהקריאה ל-API של getCredential או של 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)
)

בשלב הבא, שולחים קריאה ל-API של getCredential. הפעולה הזו תציג את הבורר של 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)
}