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);  |