diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 2d1178a3f116d..8067eee70b594 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -564,18 +564,23 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (mPackageManagerInt.getInstantAppPackageName(callingUid) != null) { return null; } + + final List out = new ArrayList<>(10); synchronized (mLock) { if (groupName != null && mRegistry.getPermissionGroup(groupName) == null) { return null; } - final ArrayList out = new ArrayList(10); for (Permission bp : mRegistry.getPermissions()) { if (Objects.equals(bp.getGroup(), groupName)) { out.add(bp.generatePermissionInfo(flags)); } } - return new ParceledListSlice<>(out); } + + final int callingUserId = UserHandle.getUserId(callingUid); + out.removeIf(it -> mPackageManagerInt.filterAppAccess(it.packageName, callingUid, + callingUserId)); + return new ParceledListSlice<>(out); } @Override