From 244714255c3b31a0c016206a8fd2f6bc7ac87e34 Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Tue, 12 Apr 2022 12:16:03 +0800 Subject: [PATCH] Honor app visibility for broadcasting PACKAGE_RESTARTED Bug: 224976267 Test: atest -p services/core/java/com/android/server/am Test: manually using the PoC in the buganizer to ensure the symptom no longer exists. Change-Id: I42e10b8c2740455a7f3dbd42886fd6eb90f7c03d --- .../server/am/ActivityManagerService.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 52577ef2566a7..1310145713841 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -4273,12 +4273,19 @@ public class ActivityManagerService extends IActivityManager.Stub intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND); } + final int userId = UserHandle.getUserId(uid); + final int[] broadcastAllowList = + getPackageManagerInternal().getVisibilityAllowList(packageName, userId); intent.putExtra(Intent.EXTRA_UID, uid); - intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(uid)); - broadcastIntentLocked(null, null, null, intent, - null, null, 0, null, null, null, null, OP_NONE, - null, false, false, MY_PID, SYSTEM_UID, Binder.getCallingUid(), - Binder.getCallingPid(), UserHandle.getUserId(uid)); + intent.putExtra(Intent.EXTRA_USER_HANDLE, userId); + broadcastIntentLocked(null /* callerApp */, null /* callerPackage */, + null /* callerFeatureId */, intent, null /* resolvedType */, null /* resultTo */, + 0 /* resultCode */, null /* resultData */, null /* resultExtras */, + null /* requiredPermissions */, null /* excludedPermissions */, OP_NONE, + null /* bOptions */, false /* ordered */, false /* sticky */, MY_PID, SYSTEM_UID, + Binder.getCallingUid(), Binder.getCallingPid(), userId, + false /* allowBackgroundActivityStarts */, null /* backgroundActivityStartsToken */, + broadcastAllowList); } private void cleanupDisabledPackageComponentsLocked(