diff options
author | 2023-05-24 23:39:49 +0000 | |
---|---|---|
committer | 2023-05-24 23:39:49 +0000 | |
commit | c4c8e0fceee86999f055b136f698a8b519271a5c (patch) | |
tree | 83dc2cbc0f43a4d4f16df4237d594e8ce91bc003 | |
parent | c695cfa592a8b9cf046e49fbd87ce2d0c72db72f (diff) | |
parent | 7aa988b10eea3a21dfcce29f9d817cfd1cf61d5e (diff) |
Merge "Fix ChooserActivity stuck disabled" into udc-dev am: 63d9e20f53 am: ffd8c9c279 am: 7aa988b10e
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/IntentResolver/+/23390358
Change-Id: I743bab6c6990ffc4aff8ed8ef35cbbe81da83817
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | AndroidManifest.xml | 8 | ||||
-rw-r--r-- | java/src/com/android/intentresolver/ChooserActivityReEnabler.kt | 39 |
2 files changed, 47 insertions, 0 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b0b815ca..da781a22 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -36,6 +36,7 @@ <uses-permission android:name="android.permission.START_ACTIVITY_AS_CALLER" /> <uses-permission android:name="android.permission.UNLIMITED_SHORTCUTS_API_CALLS" /> <uses-permission android:name="android.permission.QUERY_CLONED_APPS" /> + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:hardwareAccelerated="true" @@ -66,6 +67,13 @@ </intent-filter> </activity> + <receiver android:name=".ChooserActivityReEnabler" + android:exported="true"> + <intent-filter> + <action android:name="android.intent.action.BOOT_COMPLETED" /> + </intent-filter> + </receiver> + </application> </manifest> diff --git a/java/src/com/android/intentresolver/ChooserActivityReEnabler.kt b/java/src/com/android/intentresolver/ChooserActivityReEnabler.kt new file mode 100644 index 00000000..3236c1be --- /dev/null +++ b/java/src/com/android/intentresolver/ChooserActivityReEnabler.kt @@ -0,0 +1,39 @@ +package com.android.intentresolver + +import android.content.BroadcastReceiver +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager + +/** + * Ensures that the unbundled version of [ChooserActivity] does not get stuck in a disabled state. + */ +class ChooserActivityReEnabler : BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { + if (intent.action == Intent.ACTION_BOOT_COMPLETED) { + context.packageManager.setComponentEnabledSetting( + CHOOSER_COMPONENT, + PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, + /* flags = */ 0, + ) + + // This only needs to be run once, so we disable ourself to avoid additional startup + // process on future boots + context.packageManager.setComponentEnabledSetting( + SELF_COMPONENT, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + /* flags = */ 0, + ) + } + } + + companion object { + private const val CHOOSER_PACKAGE = "com.android.intentresolver" + private val CHOOSER_COMPONENT = + ComponentName(CHOOSER_PACKAGE, "$CHOOSER_PACKAGE.ChooserActivity") + private val SELF_COMPONENT = + ComponentName(CHOOSER_PACKAGE, "$CHOOSER_PACKAGE.ChooserActivityReEnabler") + } +} |