diff options
author | Svet Ganov <svetoslavganov@google.com> | 2015-07-07 22:49:17 -0700 |
---|---|---|
committer | Svet Ganov <svetoslavganov@google.com> | 2015-07-08 18:12:58 -0700 |
commit | ad3b2975574f916c14382628d50c710a78064746 (patch) | |
tree | 57b6dfd10624fd9e00facac26725e29a9909727f /core/java | |
parent | 3aa1b1e5ec3a4e2074ea054b931cd68df45b43cf (diff) | |
download | frameworks_base-ad3b2975574f916c14382628d50c710a78064746.zip frameworks_base-ad3b2975574f916c14382628d50c710a78064746.tar.gz frameworks_base-ad3b2975574f916c14382628d50c710a78064746.tar.bz2 |
Add an API for apps to query if a permisison is denied by policy.
bug:22177216
Change-Id: I32227f55097fae997f33743fd1eee06cb18f47f1
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/app/ApplicationPackageManager.java | 9 | ||||
-rw-r--r-- | core/java/android/content/pm/IPackageManager.aidl | 2 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageManager.java | 17 |
3 files changed, 27 insertions, 1 deletions
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index cb1e7aa..1fb0b2a 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -421,6 +421,15 @@ final class ApplicationPackageManager extends PackageManager { } @Override + public boolean isPermissionRevokedByPolicy(String permName, String pkgName) { + try { + return mPM.isPermissionRevokedByPolicy(permName, pkgName, mContext.getUserId()); + } catch (RemoteException e) { + throw new RuntimeException("Package manager has died", e); + } + } + + @Override public boolean addPermission(PermissionInfo info) { try { return mPM.addPermission(info); diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 2b83d86..103ee29 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -506,4 +506,6 @@ interface IPackageManager { int getMountExternalMode(int uid); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); + + boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 49386f9..3f582df 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -2398,7 +2398,7 @@ public abstract class PackageManager { * Check whether a particular package has been granted a particular * permission. * - * @param permName The name of the permission you are checking for, + * @param permName The name of the permission you are checking for. * @param pkgName The name of the package you are checking against. * * @return If the package has the permission, PERMISSION_GRANTED is @@ -2412,6 +2412,21 @@ public abstract class PackageManager { public abstract int checkPermission(String permName, String pkgName); /** + * Checks whether a particular permissions has been revoked for a + * package by policy. Typically the device owner or the profile owner + * may apply such a policy. The user cannot grant policy revoked + * permissions, hence the only way for an app to get such a permission + * is by a policy change. + * + * @param permName The name of the permission you are checking for. + * @param pkgName The name of the package you are checking against. + * + * @return Whether the permission is restricted by policy. + */ + @CheckResult + public abstract boolean isPermissionRevokedByPolicy(String permName, String pkgName); + + /** * Add a new dynamic permission to the system. For this to work, your * package must have defined a permission tree through the * {@link android.R.styleable#AndroidManifestPermissionTree |