diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index f27ccb765ec58..c45b9f24dfed4 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -12945,7 +12945,12 @@ public class ActivityManagerService extends IActivityManager.Stub public Intent registerReceiverWithFeature(IApplicationThread caller, String callerPackage, String callerFeatureId, String receiverId, IIntentReceiver receiver, IntentFilter filter, String permission, int userId, int flags) { - enforceNotIsolatedOrSdkSandboxCaller("registerReceiver"); + // Allow Sandbox process to register only unexported receivers. + if ((flags & Context.RECEIVER_NOT_EXPORTED) != 0) { + enforceNotIsolatedCaller("registerReceiver"); + } else { + enforceNotIsolatedOrSdkSandboxCaller("registerReceiver"); + } ArrayList stickyIntents = null; ProcessRecord callerApp = null; final boolean visibleToInstantApps