summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2023-05-24 23:39:49 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-05-24 23:39:49 +0000
commitc4c8e0fceee86999f055b136f698a8b519271a5c (patch)
tree83dc2cbc0f43a4d4f16df4237d594e8ce91bc003
parentc695cfa592a8b9cf046e49fbd87ce2d0c72db72f (diff)
parent7aa988b10eea3a21dfcce29f9d817cfd1cf61d5e (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.xml8
-rw-r--r--java/src/com/android/intentresolver/ChooserActivityReEnabler.kt39
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")
+ }
+}