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

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

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

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

הטמעה

כדי להשתמש ב'מנהל פרטי הכניסה' להצגת פרטי כניסה בתוצאות של מילוי אוטומטי, צריך להשתמש הטמעה רגילה כדי ליצור GetCredentialRequest ואז להגדיר אותו לתצוגות הרלוונטיות. הטיפול בתשובה זהה, אם התגובה מגיע מהקריאה ל-API getCredential או מה-PendingGetCredentialRequest, כמו אפשר לראות בדוגמה הבאה.

קודם כל, יוצרים 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)
);

לאחר מכן קוראים ל-API getCredential. תוצג האפשרות 'מנהל פרטי הכניסה'

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);
        }
    }
});

לבסוף, מפעילים את חוויית המילוי האוטומטי. יש להגדיר את getCredRequest כרלוונטית תצוגות (כמו username, password) כדי לאפשר מילוי אוטומטי של תוצאות של פרטי כניסה כשהמשתמש מקיים אינטראקציה עם התצוגות האלה.

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;
                       }
               )