diff options
author | Svet Ganov <svetoslavganov@google.com> | 2015-05-15 02:42:49 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-15 02:42:50 +0000 |
commit | 58964d3525d8b35618cb857e7406ccec6f35a27a (patch) | |
tree | 73ea5e5235c615e69726f487669e3215f54e0cf3 | |
parent | 30908443f1063a261c58f708ddd04756c23bc948 (diff) | |
parent | 4ef4881c8625437083c4fee36a68b235c5c36b2b (diff) | |
download | android_packages_apps_PackageInstaller-58964d3525d8b35618cb857e7406ccec6f35a27a.tar.gz android_packages_apps_PackageInstaller-58964d3525d8b35618cb857e7406ccec6f35a27a.tar.bz2 android_packages_apps_PackageInstaller-58964d3525d8b35618cb857e7406ccec6f35a27a.zip |
Merge "Don't show permission with no app ops." into mnc-dev
4 files changed, 39 insertions, 4 deletions
diff --git a/src/com/android/packageinstaller/permission/model/PermissionApps.java b/src/com/android/packageinstaller/permission/model/PermissionApps.java index d3d46cfa..10ec9596 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionApps.java +++ b/src/com/android/packageinstaller/permission/model/PermissionApps.java @@ -151,6 +151,14 @@ public class PermissionApps { return mPermissionGroup.isSystemFixed(); } + public boolean hasRuntimePermissions() { + return mPermissionGroup.hasRuntimePermission(); + } + + public boolean hasAppOpPermissions() { + return mPermissionGroup.hasAppOpPermission(); + } + public String getPackageName() { return mPackageName; } diff --git a/src/com/android/packageinstaller/permission/model/PermissionGroup.java b/src/com/android/packageinstaller/permission/model/PermissionGroup.java index 9e90d4ff..901f1a4e 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/PermissionGroup.java @@ -173,8 +173,19 @@ public final class PermissionGroup implements Comparable<PermissionGroup> { : com.android.internal.R.drawable.ic_perm_device_info; } - public boolean isAppOpPermission() { - return !mAppSupportsRuntimePermissions; + public boolean hasRuntimePermission() { + return mAppSupportsRuntimePermissions; + } + + public boolean hasAppOpPermission() { + final int permissionCount = mPermissions.size(); + for (int i = 0; i < permissionCount; i++) { + Permission permission = mPermissions.valueAt(i); + if (permission.getAppOp() != AppOpsManager.OP_NONE) { + return true; + } + } + return false; } public PackageInfo getApp() { @@ -512,7 +523,7 @@ public final class PermissionGroup implements Comparable<PermissionGroup> { return builder.toString(); } - void addPermission(Permission permission) { + private void addPermission(Permission permission) { mPermissions.put(permission.getName(), permission); } } diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java index a7c404cc..f0e8dba4 100644 --- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java @@ -180,6 +180,14 @@ public final class AppPermissionsFragment extends SettingsWithHeader if (group.isSystemFixed()) { continue; } + + // Yes this is possible. We have leftover permissions that + // are not in the final groups and we want to get rid of, + // therefore we do not have app ops for legacy support. + if (!group.hasRuntimePermission() && !group.hasAppOpPermission()) { + continue; + } + SwitchPreference preference = new SwitchPreference(activity); preference.setOnPreferenceChangeListener(this); preference.setKey(group.getName()); @@ -232,7 +240,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader if (newValue == Boolean.TRUE) { group.grantRuntimePermissions(false); } else { - if (group.isAppOpPermission() && !mHasConfirmedRevoke) { + if (group.hasAppOpPermission() && !mHasConfirmedRevoke) { new AlertDialog.Builder(getContext()) .setMessage(R.string.old_sdk_deny_warning) .setNegativeButton(R.string.cancel, null) diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java index dae90b93..b8ae369d 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java @@ -144,6 +144,14 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements if (app.isSystemFixed()) { continue; } + + // Yes this is possible. We have leftover permissions that + // are not in the final groups and we want to get rid of, + // therefore we do not have app ops for legacy support. + if (!app.hasRuntimePermissions() && !app.hasAppOpPermissions()) { + continue; + } + SwitchPreference pref = (SwitchPreference) findPreference(app.getKey()); if (pref == null) { pref = new SwitchPreference(context); |