החל מגרסה Android 15 Beta 2, בשילוב עם androidx.credentials:1.5.0-alpha01, מפתחים יכולים לקשר תצוגות ספציפיות, כמו שדות של שם משתמש או סיסמה, לבקשות של מנהל פרטי הכניסה. כשהמשתמש מתמקדים באחת מהתצוגות האלה, הבקשה המתאימה נשלחת ל-Credential Manager. פרטי הכניסה שמתקבלים נצברים מכל הספקים ומוצגים בממשקי משתמש של מילוי אוטומטי, כמו הצעות במקלדת או הצעות בתפריט הנפתח. אפשר להשתמש בתכונה הזו כחלופה במקרה שמשתמשים סוגרים בטעות את הבורר של חשבון Credential Manager ואז מקישים על השדות הרלוונטיים.
ספריית Jetpack androidx.credentials היא נקודת הקצה המועדפת למפתחים לשימוש בתכונה הזו.
איור 1: מילוי אוטומטי של תוצאות עם פרטי כניסה באמצעות סיסמה, מפתח גישה וכניסה באמצעות חשבון Google.
הטמעה
כדי להשתמש ב-Credential Manager כדי להציג פרטי כניסה בתוצאות של מילוי אוטומטי, משתמשים בהטמעה הרגילה כדי ליצור 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
. יוצג הבורר של Credential Manager.
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; } )