Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89438e0c authored by Hai Zhang's avatar Hai Zhang
Browse files

Register package broadcast receivers for all users.

The existing code is already handling multi-user by reading EXTRA_UID,
however the broadcast receiver was only registered for the primary
user. So we just need to register it for all users.

Fixes: 150038154
Fixes: 153600945
Test: adb shell pm create-user "Test user"
Test: adb shell am switch-user 10
Test: atest android.app.appops.cts.AttributionTest
Change-Id: I90f5989e858487a780aada00ba2fa7c2e08ff834
parent 44d6bc85
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1597,7 +1597,8 @@ public class AppOpsService extends IAppOpsService.Stub {
        packageUpdateFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
        packageUpdateFilter.addDataScheme("package");

        mContext.registerReceiver(mOnPackageUpdatedReceiver, packageUpdateFilter);
        mContext.registerReceiverAsUser(mOnPackageUpdatedReceiver, UserHandle.ALL,
                packageUpdateFilter, null, null);

        synchronized (this) {
            for (int uidNum = mUidStates.size() - 1; uidNum >= 0; uidNum--) {
@@ -1640,7 +1641,7 @@ public class AppOpsService extends IAppOpsService.Stub {
        final IntentFilter packageSuspendFilter = new IntentFilter();
        packageSuspendFilter.addAction(Intent.ACTION_PACKAGES_UNSUSPENDED);
        packageSuspendFilter.addAction(Intent.ACTION_PACKAGES_SUSPENDED);
        mContext.registerReceiver(new BroadcastReceiver() {
        mContext.registerReceiverAsUser(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                final int[] changedUids = intent.getIntArrayExtra(Intent.EXTRA_CHANGED_UID_LIST);
@@ -1664,7 +1665,7 @@ public class AppOpsService extends IAppOpsService.Stub {
                    }
                }
            }
        }, packageSuspendFilter);
        }, UserHandle.ALL, packageSuspendFilter, null, null);

        final IntentFilter packageAddedFilter = new IntentFilter();
        packageAddedFilter.addAction(Intent.ACTION_PACKAGE_ADDED);