diff --git a/core/java/android/credentials/ui/IntentFactory.java b/core/java/android/credentials/ui/IntentFactory.java index 67634dc0ad8c8..3c10e8152efe4 100644 --- a/core/java/android/credentials/ui/IntentFactory.java +++ b/core/java/android/credentials/ui/IntentFactory.java @@ -78,7 +78,7 @@ public class IntentFactory { Resources.getSystem() .getString( com.android.internal.R.string - .config_credentialManagerDialogComponent)); + .config_credentialManagerReceiverComponent)); intent.setComponent(componentName); intent.setAction(Constants.CREDMAN_ENABLED_PROVIDERS_UPDATED); return intent; diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 12eff6723d887..2f94ed77ed499 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -3065,6 +3065,10 @@ com.android.credentialmanager/com.android.credentialmanager.CredentialSelectorActivity + + com.android.credentialmanager/com.android.credentialmanager.CredentialProviderReceiver + ;com.android.settings; diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 7e89fc8b5e467..12646a0dc77e6 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2210,6 +2210,7 @@ + diff --git a/packages/CredentialManager/AndroidManifest.xml b/packages/CredentialManager/AndroidManifest.xml index b36cb5c9709fc..dfc8aa06c4047 100644 --- a/packages/CredentialManager/AndroidManifest.xml +++ b/packages/CredentialManager/AndroidManifest.xml @@ -41,6 +41,15 @@ android:excludeFromRecents="true" android:theme="@style/Theme.CredentialSelector"> + + + + + + diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt index 0d25bece62a62..458cfe3e6b950 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt @@ -73,7 +73,7 @@ class CredentialManagerRepo( requestInfo = intent.extras?.getParcelable( RequestInfo.EXTRA_REQUEST_INFO, RequestInfo::class.java - ) ?: testCreatePasskeyRequestInfo() + ) ?: testCreatePasswordRequestInfo() providerEnabledList = when (requestInfo.type) { RequestInfo.TYPE_CREATE -> diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialProviderReceiver.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialProviderReceiver.kt new file mode 100644 index 0000000000000..ee8cffed7f7d8 --- /dev/null +++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialProviderReceiver.kt @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.credentialmanager + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.util.Log +import com.android.credentialmanager.common.Constants + + +class CredentialProviderReceiver : BroadcastReceiver() { + + override fun onReceive(context: Context?, intent: Intent?) { + Log.d(Constants.LOG_TAG, "Received intent in CredentialProviderReceiver") + + val sharedPreferences = context?.getSharedPreferences(context?.packageName, + Context.MODE_PRIVATE) + sharedPreferences?.edit()?.remove(UserConfigRepo.DEFAULT_PROVIDER)?.commit() + } +} \ No newline at end of file diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java index cce12a252e785..40da5136feddd 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java +++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java @@ -17,6 +17,7 @@ package com.android.server.credentials; import static android.Manifest.permission.CREDENTIAL_MANAGER_SET_ORIGIN; +import static android.Manifest.permission.LAUNCH_CREDENTIAL_SELECTOR; import static android.content.Context.CREDENTIAL_SERVICE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; @@ -671,7 +672,8 @@ public final class CredentialManagerService } // Send an intent to the UI that we have new enabled providers. - getContext().sendBroadcast(IntentFactory.createProviderUpdateIntent()); + getContext().sendBroadcast(IntentFactory.createProviderUpdateIntent(), + LAUNCH_CREDENTIAL_SELECTOR); } @Override