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 267fbf030619f..beb72686d6cee 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -1173,6 +1173,14 @@ public class PermissionManagerService { } } + if (hardRestricted && !restrictionExempt + && (flags & FLAG_PERMISSION_SYSTEM_FIXED) != 0) { + // Applying a hard restriction implies revoking it. This might + // lead to a system-fixed, revoked permission. + flags &= ~FLAG_PERMISSION_SYSTEM_FIXED; + wasChanged = true; + } + if (wasChanged) { updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); }