diff options
| author | 2023-02-24 17:08:23 +0000 | |
|---|---|---|
| committer | 2023-02-24 17:08:23 +0000 | |
| commit | 7c70bad12b9267a2bec742cb8612f283163338b1 (patch) | |
| tree | 3622bc1439fc893aaa5aa33f39404555345ae184 | |
| parent | cdab1b8766f94fa08c8736ebed2d7b76c639bb38 (diff) | |
| parent | 35bdd08160078f2ed9a7a4e0301a6b64197cb7a4 (diff) | |
Merge "Add Broadcast Receiver for listening to provider updates" into udc-dev
7 files changed, 54 insertions, 3 deletions
diff --git a/core/java/android/credentials/ui/IntentFactory.java b/core/java/android/credentials/ui/IntentFactory.java index 67634dc0ad8c..3c10e8152efe 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 12eff6723d88..2f94ed77ed49 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -3065,6 +3065,10 @@ <string name="config_credentialManagerDialogComponent" translatable="false" >com.android.credentialmanager/com.android.credentialmanager.CredentialSelectorActivity</string> + <!-- Name of the broadcast receiver that is used to receive provider change events --> + <string name="config_credentialManagerReceiverComponent" translatable="false" + >com.android.credentialmanager/com.android.credentialmanager.CredentialProviderReceiver</string> + <!-- Apps that are authorized to access shared accounts, overridden by product overlays --> <string name="config_appsAuthorizedForSharedAccounts" translatable="false">;com.android.settings;</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 7e89fc8b5e46..12646a0dc77e 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2210,6 +2210,7 @@ <java-symbol type="string" name="config_platformVpnConfirmDialogComponent" /> <java-symbol type="string" name="config_carrierAppInstallDialogComponent" /> <java-symbol type="string" name="config_credentialManagerDialogComponent" /> + <java-symbol type="string" name="config_credentialManagerReceiverComponent" /> <java-symbol type="string" name="config_defaultNetworkScorerPackageName" /> <java-symbol type="string" name="config_persistentDataPackageName" /> <java-symbol type="string" name="config_deviceConfiguratorPackageName" /> diff --git a/packages/CredentialManager/AndroidManifest.xml b/packages/CredentialManager/AndroidManifest.xml index b36cb5c9709f..dfc8aa06c404 100644 --- a/packages/CredentialManager/AndroidManifest.xml +++ b/packages/CredentialManager/AndroidManifest.xml @@ -41,6 +41,15 @@ android:excludeFromRecents="true" android:theme="@style/Theme.CredentialSelector"> </activity> + + <receiver + android:name=".CredentialProviderReceiver" + android:exported="true" + android:permission="android.permission.LAUNCH_CREDENTIAL_SELECTOR"> + <intent-filter> + <action android:name="android.credentials.ui.action.CREDMAN_ENABLED_PROVIDERS_UPDATED"/> + </intent-filter> + </receiver> </application> </manifest> diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt index e3236b38b0f7..30b97bf60d8a 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 000000000000..ee8cffed7f7d --- /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 8b913db35734..7a4e7dfd56a3 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; @@ -631,7 +632,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 |