diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 2bc131fae9058..b4f8f61971f89 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -2810,14 +2810,13 @@ public final class ActiveServices { } List getRunningServiceInfoLocked(int maxNum, int flags, - int callingUid, boolean allowed) { + int callingUid, boolean allowed, boolean canInteractAcrossUsers) { ArrayList res = new ArrayList(); final long ident = Binder.clearCallingIdentity(); try { - if (ActivityManager.checkUidPermission(INTERACT_ACROSS_USERS_FULL, callingUid) - == PERMISSION_GRANTED) { + if (canInteractAcrossUsers) { int[] users = mAm.mUserController.getUsers(); for (int ui=0; ui alls = getServicesLocked(users[ui]); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 67cac981f5997..fb53419246f04 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -17506,12 +17506,15 @@ public class ActivityManagerService extends IActivityManager.Stub public List getServices(int maxNum, int flags) { enforceNotIsolatedCaller("getServices"); - synchronized (this) { - final int callingUid = Binder.getCallingUid(); - final boolean allowed = isGetTasksAllowed("getServices", Binder.getCallingPid(), - callingUid); - return mServices.getRunningServiceInfoLocked(maxNum, flags, callingUid, allowed); + final int callingUid = Binder.getCallingUid(); + final boolean canInteractAcrossUsers = (ActivityManager.checkUidPermission( + INTERACT_ACROSS_USERS_FULL, callingUid) == PERMISSION_GRANTED); + final boolean allowed = isGetTasksAllowed("getServices", Binder.getCallingPid(), + callingUid); + synchronized (this) { + return mServices.getRunningServiceInfoLocked(maxNum, flags, callingUid, + allowed, canInteractAcrossUsers); } }