با شروع Android 15 Beta 2، جفتشده با androidx.credentials:1.5.0-alpha01 ، توسعهدهندگان میتوانند نماهای خاصی مانند فیلدهای نام کاربری یا رمز عبور را با درخواستهای Credential Manager پیوند دهند. هنگامی که کاربر روی یکی از این نماها تمرکز می کند، درخواست مربوطه به Credential Manager ارسال می شود. اعتبارنامههای بهدستآمده در بین ارائهدهندگان جمعآوری میشوند و در رابطهای کاربری تکمیل خودکار، مانند پیشنهادات درون خطی صفحهکلید، یا پیشنهادات کشویی نمایش داده میشوند. هنگامی که کاربران به طور تصادفی انتخابگر حساب 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) )
جاوا
// 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) );
سپس getCredential
API را فراخوانی کنید. این گزینه انتخاب کننده Credential Manager را نمایش می دهد.
کاتلین
coroutineScope.launch { try { val result = credentialManager.getCredential( context = activityContext, // Use an activity-based context. request = getCredRequest ) handleSignIn(result); } catch (GetCredentialException e) { handleFailure(e); } }
جاوا
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
) تنظیم کنید تا وقتی کاربر با این نماها تعامل دارد، نتایج اعتبارنامه را در تکمیل خودکار فعال کنید.
کاتلین
import androidx.credentials.PendingGetCredentialRequest usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) } passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest( getCredRequest) { response -> handleSignIn(response) }
جاوا
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; } )