diff options
author | Arthur Shuai <shuaiq@codeaurora.org> | 2016-10-20 15:50:44 +0800 |
---|---|---|
committer | Arthur Shuai <shuaiq@codeaurora.org> | 2016-10-20 15:50:44 +0800 |
commit | 64d3812bca7c1121a767e8436b433e8b293e0110 (patch) | |
tree | d516e3e68e3fa79650f45cfabf5c8b5deee9d316 | |
parent | 5716d5b8e853ced35bbc4ffa51302fc7276f3470 (diff) | |
download | android_packages_apps_PackageInstaller-64d3812bca7c1121a767e8436b433e8b293e0110.tar.gz android_packages_apps_PackageInstaller-64d3812bca7c1121a767e8436b433e8b293e0110.tar.bz2 android_packages_apps_PackageInstaller-64d3812bca7c1121a767e8436b433e8b293e0110.zip |
Disable permission auto enable in case only disable it under group permission
The permission of dial out will be auto enabled if only disable it under call
group permission. This change disable auto enable permission in this case.
Change-Id: Ibe8c9064fcd4fdfd33da69d68c145a5108a484d2
CRs-Fixed:1079155
-rw-r--r--[-rwxr-xr-x] | src/com/android/packageinstaller/permission/model/AppPermissionGroup.java | 22 | ||||
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java | 24 |
2 files changed, 40 insertions, 6 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index 2bdae425..aa68959e 100755..100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -286,6 +286,28 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> return mPermissions.get(permission) != null; } + public boolean checkRuntimePermission(String[] filterPermissions) { + if (LocationUtils.isLocationGroupAndProvider(mName, mPackageInfo.packageName)) { + return LocationUtils.isLocationEnabled(mContext); + } + final int permissionCount = mPermissions.size(); + for (int i = 0; i < permissionCount; i++) { + Permission permission = mPermissions.valueAt(i); + if (filterPermissions != null + && !ArrayUtils.contains(filterPermissions, permission.getName())) { + continue; + } + if (mAppSupportsRuntimePermissions) { + if (!permission.isGranted()) { + return false; + } + } else if (permission.isGranted() && (permission.getAppOp() == null + || permission.isAppOpAllowed())) { + return true; + } + } + return false; + } public boolean areRuntimePermissionsGranted() { return areRuntimePermissionsGranted(null); } diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index 4a4b7558..fdb16484 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -161,12 +161,22 @@ public class GrantPermissionsActivity extends OverlayTouchActivity break; default: { - if (!group.areRuntimePermissionsGranted()) { - mRequestGrantPermissionGroups.put(group.getName(), - new GroupState(group)); + if (AppPermissionGroup.isStrictOpEnable()) { + if (!group.checkRuntimePermission(null)) { + mRequestGrantPermissionGroups.put(group.getName(), + new GroupState(group)); + } else { + group.grantRuntimePermissions(false); + updateGrantResults(group); + } } else { - group.grantRuntimePermissions(false); - updateGrantResults(group); + if (!group.areRuntimePermissionsGranted()) { + mRequestGrantPermissionGroups.put(group.getName(), + new GroupState(group)); + } else { + group.grantRuntimePermissions(false); + updateGrantResults(group); + } } } break; @@ -297,7 +307,9 @@ public class GrantPermissionsActivity extends OverlayTouchActivity groupState.mGroup.grantRuntimePermissions(doNotAskAgain); groupState.mState = GroupState.STATE_ALLOWED; } else { - groupState.mGroup.revokeRuntimePermissions(doNotAskAgain); + if(!AppPermissionGroup.isStrictOpEnable()){ + groupState.mGroup.revokeRuntimePermissions(doNotAskAgain); + } groupState.mState = GroupState.STATE_DENIED; } updateGrantResults(groupState.mGroup); |