summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index af6eaf4e94bd..811ccdaeee4b 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -13506,9 +13506,19 @@ public class ActivityManagerService extends IActivityManager.Stub
// Don't enforce the flag check if we're EITHER registering for only protected
// broadcasts, or the receiver is null (a sticky broadcast). Sticky broadcasts should
// not be used generally, so we will be marking them as exported by default
- final boolean requireExplicitFlagForDynamicReceivers = CompatChanges.isChangeEnabled(
+ boolean requireExplicitFlagForDynamicReceivers = CompatChanges.isChangeEnabled(
DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED, callingUid)
&& mConstants.mEnforceReceiverExportedFlagRequirement;
+ // STOPSHIP(b/259139792): Allow apps that are currently targeting U and in process of
+ // updating their receivers to be exempt from this requirement until their receivers
+ // are flagged.
+ if (requireExplicitFlagForDynamicReceivers) {
+ if ("com.google.android.apps.messaging".equals(callerPackage)) {
+ // Note, a versionCode check for this package is not performed because it could
+ // cause breakage with a subsequent update outside the system image.
+ requireExplicitFlagForDynamicReceivers = false;
+ }
+ }
if (!onlyProtectedBroadcasts) {
if (receiver == null && !explicitExportStateDefined) {
// sticky broadcast, no flag specified (flag isn't required)