From f9d091ff773db27eb6715d41891317f43dfcae5c Mon Sep 17 00:00:00 2001 From: Shiwangi Shah Date: Thu, 24 Mar 2022 17:10:35 +0000 Subject: [PATCH] Allow unexported receiver registration for sandbox Webview uses some system level broadcasts. This change enables webview to work in the sandbox process Bug: b/226564146 Test: Manual Change-Id: I8b1a51c513b825e6749d1b711d6ef0b9f13300af --- .../java/com/android/server/am/ActivityManagerService.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index c40f65f542100..04da8009fb12e 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -12938,7 +12938,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