diff options
author | Jason Monk <jmonk@google.com> | 2015-05-08 13:32:43 -0400 |
---|---|---|
committer | Jason Monk <jmonk@google.com> | 2015-05-13 15:13:36 -0400 |
commit | a9e632bec5a6bb4e053468e07360ceab56add490 (patch) | |
tree | 7449e84d30a22b7f3066dd7a4112b063fe168f56 /src | |
parent | c3582acfa0b9d65b29a7e19cc55551fbbdddbc4e (diff) | |
download | android_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.java | 4 | ||||
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java | 29 |
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; |