Android 15 베타 2부터 androidx.credentials:1.5.0-alpha01과 페어링하면 개발자가 사용자 이름이나 비밀번호 필드와 같은 특정 뷰를 Credential Manager 요청과 연결할 수 있습니다. 사용자가 이러한 뷰 중 하나에 포커스를 두면 해당 요청이 인증 관리자로 전송됩니다. 결과 사용자 인증 정보는 제공업체 전반에서 집계되고 키보드 인라인 추천이나 드롭다운 추천과 같은 자동 완성 UI에 표시됩니다.
이 기능은 사용자가 실수로 인증 관리자 계정 선택기를 닫은 후 관련 필드를 탭할 때 대체로 사용할 수 있습니다.
Jetpack androidx.credentials 라이브러리는 개발자가 이 기능을 사용하는 데 선호되는 엔드포인트입니다.
그림 1: 비밀번호, 패스키, Google로 로그인 기능을 사용하는 사용자 인증 정보가 포함된 자동 완성 결과
구현
사용자 인증 정보를 사용하여 자동 완성 결과에 사용자 인증 정보를 표시하려면 표준 구현을 사용하여 GetCredentialRequest를 빌드한 다음 관련 뷰에 설정합니다. 다음 예와 같이 응답이 getCredential API 호출에서 오는지 PendingGetCredentialRequest에서 오는지에 관계없이 응답 처리는 동일합니다.
먼저 GetCredentialRequest를 생성합니다.
// Retrieves the user's saved password for your app.valgetPasswordOption=GetPasswordOption()// Get a passkey from the user's public key credential provider.valgetPublicKeyCredentialOption=GetPublicKeyCredentialOption(requestJson=requestJson)valgetCredRequest=GetCredentialRequest(listOf(getPasswordOption,getPublicKeyCredentialOption))
다음으로 getCredential API를 호출합니다. 그러면 인증 관리자 선택기가 표시됩니다.
coroutineScope{try{valresult=credentialManager.getCredential(context=activityContext,// Use an activity-based context.request=getCredRequest)handleSignIn(result)}catch(e:GetCredentialException){handleFailure(e)}}
마지막으로 자동 완성 환경을 사용 설정합니다. 사용자가 이러한 뷰와 상호작용할 때 자동 완성에 사용자 인증 정보 결과가 표시되도록 getCredRequest을 관련 뷰 (예: username, password)로 설정합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-08-27(UTC)
[null,null,["최종 업데이트: 2025-08-27(UTC)"],[],[],null,["Starting with Android 15 Beta 2, paired with\n[androidx.credentials:1.5.0-alpha01](/jetpack/androidx/releases/credentials#version_15_2), developers can link specific views like\nusername or password fields with Credential Manager requests. When the user\nfocuses on one of these views, the corresponding request is sent to Credential\nManager. The resulting credentials are aggregated across providers and displayed\nin autofill UIs, such as keyboard inline suggestions, or drop-down suggestions.\nThis feature can be used as a fallback when users accidentally dismiss the\nCredential Manager account selector and then tap on the relevant fields.\n\nThe ***Jetpack androidx.credentials*** library is the preferred endpoint for\ndevelopers to use for this feature.\n\n\u003cbr /\u003e\n\n\n**Figure 1:** Autofill results with credentials using password, passkey, and\nSign in with Google.\n| **Note:** This feature is only available for `View` objects at this time.\n\nImplementation\n\nTo use Credential Manager to show credentials in autofill results, use the\n[standard implementation](/identity/sign-in/credential-manager) to build a `GetCredentialRequest` and then set it\nto the relevant views. The response handling is the same, whether the response\ncomes from the `getCredential` API call or the `PendingGetCredentialRequest`, as\nshown in the following example.\n\nFirst, construct a `GetCredentialRequest`: \n\n // Retrieves the user's saved password for your app.\n val getPasswordOption = GetPasswordOption()\n\n // Get a passkey from the user's public key credential provider.\n val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(\n requestJson = requestJson\n )\n\n val getCredRequest = GetCredentialRequest(\n listOf(getPasswordOption, getPublicKeyCredentialOption)\n )\n\nNext, call the `getCredential` API. This displays the Credential Manager\nselector. \n\n coroutineScope {\n try {\n val result = credentialManager.getCredential(\n context = activityContext, // Use an activity-based context.\n request = getCredRequest\n )\n handleSignIn(result)\n } catch (e: GetCredentialException) {\n handleFailure(e)\n }\n }\n\nFinally, enable the autofill experience. Set the `getCredRequest` to relevant\nviews (such as `username, password`) to enable credential results in autofill\nwhen the user interacts with these views.\n**Note:** The `setPendingGetCredentialRequest` is an *extension API* in the androidx.credentials library, and is called differently between Kotlin and Java. \n\n usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(\n getCredRequest\n ) { response -\u003e\n handleSignIn(response)\n }\n\n passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(\n getCredRequest\n ) { response -\u003e\n handleSignIn(response)\n }"]]