diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index c9e7cfa732597..d073bc60c766a 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -782,13 +782,20 @@ public class AppOpsService extends IAppOpsService.Stub { final int[] changedUids = intent.getIntArrayExtra(Intent.EXTRA_CHANGED_UID_LIST); final String[] changedPkgs = intent.getStringArrayExtra( Intent.EXTRA_CHANGED_PACKAGE_LIST); - final ArraySet callbacks = mOpModeWatchers.get(OP_PLAY_AUDIO); + ArraySet callbacks; + synchronized (AppOpsService.this) { + callbacks = mOpModeWatchers.get(OP_PLAY_AUDIO); + if (callbacks == null) { + return; + } + callbacks = new ArraySet<>(callbacks); + } for (int i = 0; i < changedUids.length; i++) { final int changedUid = changedUids[i]; final String changedPkg = changedPkgs[i]; - // We trust packagemanager to insert matching uid and packageNames in the extras - mHandler.sendMessage(PooledLambda.obtainMessage(AppOpsService::notifyOpChanged, - AppOpsService.this, callbacks, OP_PLAY_AUDIO, changedUid, changedPkg)); + // We trust packagemanager to insert matching uid and packageNames in the + // extras + notifyOpChanged(callbacks, OP_PLAY_AUDIO, changedUid, changedPkg); } } }, packageSuspendFilter);