summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/packageinstaller/permission/model/PermissionApps.java8
-rw-r--r--src/com/android/packageinstaller/permission/model/PermissionGroup.java17
-rw-r--r--src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java10
-rw-r--r--src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java8
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);