summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Monk <jmonk@google.com>2015-05-08 13:32:43 -0400
committerJason Monk <jmonk@google.com>2015-05-13 15:13:36 -0400
commita9e632bec5a6bb4e053468e07360ceab56add490 (patch)
tree7449e84d30a22b7f3066dd7a4112b063fe168f56 /src
parentc3582acfa0b9d65b29a7e19cc55551fbbdddbc4e (diff)
downloadandroid_packages_apps_PackageInstaller-a9e632bec5a6bb4e053468e07360ceab56add490.tar.gz
android_packages_apps_PackageInstaller-a9e632bec5a6bb4e053468e07360ceab56add490.tar.bz2
android_packages_apps_PackageInstaller-a9e632bec5a6bb4e053468e07360ceab56add490.zip
Add warning dialog for revoking non-M perms
Change-Id: I77d6e8da090684a65bdf27ba4a3a60ba6a5e9ac9
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/model/PermissionGroup.java4
-rw-r--r--src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java29
2 files changed, 30 insertions, 3 deletions
diff --git a/src/com/android/packageinstaller/permission/model/PermissionGroup.java b/src/com/android/packageinstaller/permission/model/PermissionGroup.java
index 451b5d9e..3a197184 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionGroup.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionGroup.java
@@ -172,6 +172,10 @@ public final class PermissionGroup implements Comparable<PermissionGroup> {
mIconResId = iconResId;
}
+ public boolean isAppOpPermission() {
+ return !mAppSupportsRuntimePermissions;
+ }
+
public PackageInfo getApp() {
return mPackageInfo;
}
diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
index 8c026946..7b64d7b3 100644
--- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
@@ -19,7 +19,10 @@ package com.android.packageinstaller.permission.ui;
import android.annotation.Nullable;
import android.app.ActionBar;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.FragmentTransaction;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
@@ -60,6 +63,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader
private AppPermissions mAppPermissions;
private PreferenceScreen mExtraScreen;
+ private boolean mHasConfirmedRevoke;
+
public static AppPermissionsFragment newInstance(String packageName) {
AppPermissionsFragment instance = new AppPermissionsFragment();
Bundle arguments = new Bundle();
@@ -71,6 +76,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mHasConfirmedRevoke = false;
setHasOptionsMenu(true);
final ActionBar ab = getActivity().getActionBar();
if (ab != null) {
@@ -208,9 +214,9 @@ public final class AppPermissionsFragment extends SettingsWithHeader
}
@Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
+ public boolean onPreferenceChange(final Preference preference, Object newValue) {
String groupName = preference.getKey();
- PermissionGroup group = mAppPermissions.getPermissionGroup(groupName);
+ final PermissionGroup group = mAppPermissions.getPermissionGroup(groupName);
if (group == null) {
return false;
@@ -219,7 +225,24 @@ public final class AppPermissionsFragment extends SettingsWithHeader
if (newValue == Boolean.TRUE) {
group.grantRuntimePermissions(false);
} else {
- group.revokeRuntimePermissions(false);
+ if (group.isAppOpPermission() && !mHasConfirmedRevoke) {
+ new AlertDialog.Builder(getContext())
+ .setMessage(R.string.old_sdk_deny_warning)
+ .setNegativeButton(R.string.cancel, null)
+ .setPositiveButton(R.string.grant_dialog_button_deny,
+ new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ ((SwitchPreference) preference).setChecked(false);
+ group.revokeRuntimePermissions(false);
+ mHasConfirmedRevoke = true;
+ }
+ })
+ .show();
+ return false;
+ } else {
+ group.revokeRuntimePermissions(false);
+ }
}
return true;