diff options
author | Amith Yamasani <yamasani@google.com> | 2015-06-22 17:48:19 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2015-06-23 12:41:48 -0700 |
commit | 1d3660600282ec2cda1d5eeb114253923eb7dcc7 (patch) | |
tree | fa00ecae1f4933bb3e8a4998e5931cdf81755c92 /src/com | |
parent | eea1ab14df885388c1804e6f38db9a780ed3f693 (diff) | |
download | android_packages_apps_PackageInstaller-1d3660600282ec2cda1d5eeb114253923eb7dcc7.tar.gz android_packages_apps_PackageInstaller-1d3660600282ec2cda1d5eeb114253923eb7dcc7.tar.bz2 android_packages_apps_PackageInstaller-1d3660600282ec2cda1d5eeb114253923eb7dcc7.zip |
Mark permissions that are auto granted/revoked as policy_fixed
Let PackageManager know that the permission state was changed
by policy so that it can't be modified by the user anymore.
Bug: 21888917
Change-Id: Idd09005515fac89fb1603b3aff0345a1f5e7bd79
Diffstat (limited to 'src/com')
3 files changed, 23 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index 7b2de19a..6bd15aff 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -459,6 +459,19 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> return true; } + public void setPolicyFixed() { + final int permissionCount = mPermissions.size(); + for (int i = 0; i < permissionCount; i++) { + Permission permission = mPermissions.valueAt(i); + permission.setPolicyFixed(true); + mPackageManager.updatePermissionFlags(permission.getName(), + mPackageInfo.packageName, + PackageManager.FLAG_PERMISSION_POLICY_FIXED, + PackageManager.FLAG_PERMISSION_POLICY_FIXED, + mUserHandle); + } + } + public List<Permission> getPermissions() { return new ArrayList<>(mPermissions.values()); } diff --git a/src/com/android/packageinstaller/permission/model/Permission.java b/src/com/android/packageinstaller/permission/model/Permission.java index 09c927be..da234bdb 100644 --- a/src/com/android/packageinstaller/permission/model/Permission.java +++ b/src/com/android/packageinstaller/permission/model/Permission.java @@ -96,6 +96,14 @@ public final class Permission { } } + public void setPolicyFixed(boolean policyFixed) { + if (policyFixed) { + mFlags |= PackageManager.FLAG_PERMISSION_POLICY_FIXED; + } else { + mFlags &= ~PackageManager.FLAG_PERMISSION_POLICY_FIXED; + } + } + public boolean shouldRevokeOnUpgrade() { return (mFlags & PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE) != 0; } diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index 98773f54..29000606 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -119,12 +119,14 @@ public class GrantPermissionsActivity extends Activity case DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT: { if (!group.areRuntimePermissionsGranted()) { group.grantRuntimePermissions(false); + group.setPolicyFixed(); } } break; case DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY: { if (!group.areRuntimePermissionsGranted()) { group.revokeRuntimePermissions(false); + group.setPolicyFixed(); } } break; |