diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index 1ae430a3281a..bf5a50e7ea53 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -1272,7 +1272,12 @@ public final class DefaultPermissionGrantPolicy { newFlags |= (flags & PackageManager.FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT); // If we are allowlisting the permission, update the exempt flag before grant. - if (whitelistRestrictedPermissions && pm.isPermissionRestricted(permission)) { + // If the permission can't be allowlisted by an installer, skip it here because + // this is where the platform takes the role of the installer for exempting + // preinstalled apps. + if (whitelistRestrictedPermissions && pm.isPermissionRestricted(permission) + && !pm.getPermissionInfo(permission).isInstallerExemptIgnored()) { + pm.updatePermissionFlags(permission, pkg, PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, user); |