diff options
author | 2019-05-24 05:59:44 +0000 | |
---|---|---|
committer | 2019-05-24 05:59:44 +0000 | |
commit | 49259731455c4e3542ccde93426e82bde7287178 (patch) | |
tree | 2abe7d50a08a6286abf2dfcd00b0467f2381af83 | |
parent | f0c2960c9504a11aaecfceae5195c5c734dc001c (diff) | |
parent | 5b8f567738bd8cd47d4eb7e5e2de96e267494ec4 (diff) |
Merge "Don't expand loc permission on fresh Q install" into qt-dev
-rw-r--r-- | PermissionController/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java | 60 |
1 files changed, 38 insertions, 22 deletions
diff --git a/PermissionController/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java b/PermissionController/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java index cf668c5ed..6c11432c2 100644 --- a/PermissionController/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java +++ b/PermissionController/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java @@ -78,7 +78,18 @@ class RuntimePermissionsUpgradeController { | PackageManager.GET_PERMISSIONS); final int appCount = apps.size(); - if (currentVersion <= 0) { + final boolean sdkUpgradedFromP; + if (currentVersion <= -1) { + Log.i(LOG_TAG, "Upgrading from Android P"); + + sdkUpgradedFromP = true; + + currentVersion = 0; + } else { + sdkUpgradedFromP = false; + } + + if (currentVersion == 0) { Log.i(LOG_TAG, "Grandfathering SMS and CallLog permissions"); final List<String> smsPermissions = Utils.getPlatformPermissionNamesOfGroup( @@ -105,34 +116,39 @@ class RuntimePermissionsUpgradeController { } if (currentVersion == 1) { - Log.i(LOG_TAG, "Expanding location permissions"); - - for (int i = 0; i < appCount; i++) { - final PackageInfo app = apps.get(i); - if (app.requestedPermissions == null) { - continue; - } + if (sdkUpgradedFromP) { + Log.i(LOG_TAG, "Expanding location permissions"); - for (String perm : app.requestedPermissions) { - String groupName = Utils.getGroupOfPlatformPermission(perm); - - if (!TextUtils.equals(groupName, Manifest.permission_group.LOCATION)) { + for (int i = 0; i < appCount; i++) { + final PackageInfo app = apps.get(i); + if (app.requestedPermissions == null) { continue; } - final AppPermissionGroup group = AppPermissionGroup.create(context, app, perm, - false); - final AppPermissionGroup bgGroup = group.getBackgroundPermissions(); + for (String perm : app.requestedPermissions) { + String groupName = Utils.getGroupOfPlatformPermission(perm); - if (group.areRuntimePermissionsGranted() - && bgGroup != null - && !bgGroup.isUserSet() && !bgGroup.isSystemFixed() - && !bgGroup.isPolicyFixed()) { - bgGroup.grantRuntimePermissions(group.isUserFixed()); - } + if (!TextUtils.equals(groupName, Manifest.permission_group.LOCATION)) { + continue; + } - break; + final AppPermissionGroup group = AppPermissionGroup.create(context, app, + perm, false); + final AppPermissionGroup bgGroup = group.getBackgroundPermissions(); + + if (group.areRuntimePermissionsGranted() + && bgGroup != null + && !bgGroup.isUserSet() && !bgGroup.isSystemFixed() + && !bgGroup.isPolicyFixed()) { + bgGroup.grantRuntimePermissions(group.isUserFixed()); + } + + break; + } } + } else { + Log.i(LOG_TAG, "Not expanding location permissions as this is not an upgrade " + + "from Android P"); } currentVersion = 2; |