summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJiao Yuan <yuanjiao@codeaurora.org>2016-09-19 16:44:10 +0800
committerc_jyuan <yuanjiao@codeaurora.org>2016-09-20 15:41:32 +0800
commitb787f076e6cb038717af62f1b6a7b55620dfd626 (patch)
tree1300783361b8cd7dd87efe6591e2f5d957065ea6 /src
parent2d5c59ce6a0def14934662b6741cbef6c07c7e71 (diff)
downloadandroid_packages_apps_PackageInstaller-b787f076e6cb038717af62f1b6a7b55620dfd626.tar.gz
android_packages_apps_PackageInstaller-b787f076e6cb038717af62f1b6a7b55620dfd626.tar.bz2
android_packages_apps_PackageInstaller-b787f076e6cb038717af62f1b6a7b55620dfd626.zip
Add dialog when revoke one permission
When revoke one permission in the settings, add a warning dialog to users. Change-Id: I157a4b0aab0e8d4f9719b4ff4d68f7eb11922ec3
Diffstat (limited to 'src')
-rwxr-xr-xsrc/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
index 67c51bf8..f4e59625 100755
--- a/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java
@@ -332,18 +332,34 @@ public final class AppPermissionsFragment extends SettingsWithHeader
PermissionInfo permInfo = pm.getPermissionInfo(key, 0);
final AppPermissionGroup title_group
= mAppPermissions.getPermissionGroup(permInfo.group);
+ final boolean grantedByDefault = title_group.hasGrantedByDefaultPermission();
+ PreferenceScreen screen = getPreferenceScreen();
+ Preference group_preference = screen.findPreference((CharSequence) permInfo.group);
+ AppPermissionGroup permissionGroup = getPermisssionGroup(permInfo.group);
if (newValue == Boolean.TRUE) {
+ ((SwitchPreference)preference).setChecked(true);
title_group.grantRuntimePermissions(false, filterPermissions);
+ ((SwitchPreference) group_preference).setChecked(
+ permissionGroup.areRuntimePermissionsGranted());
} else {
- title_group.revokeRuntimePermissions(false, filterPermissions);
+ //When the permission is off, the application maybe will crash, so need to
+ //add a warning dialog when the user revoke the permission.
+ new AlertDialog.Builder(getContext())
+ .setMessage(grantedByDefault ? R.string.system_warning
+ : R.string.old_sdk_deny_warning)
+ .setNegativeButton(R.string.cancel, null)
+ .setPositiveButton(R.string.grant_dialog_button_deny_anyway,
+ new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ ((SwitchPreference) preference).setChecked(false);
+ title_group.revokeRuntimePermissions(false, filterPermissions);
+ ((SwitchPreference) group_preference).setChecked(
+ permissionGroup.areRuntimePermissionsGranted());
+ }
+ })
+ .show();
}
- //group preferene update
- PreferenceScreen screen = getPreferenceScreen();
- Preference group_preference = screen.findPreference((CharSequence) permInfo.group);
- AppPermissionGroup permissionGroup = getPermisssionGroup(permInfo.group);
- ((SwitchPreference) group_preference).setChecked(
- permissionGroup.areRuntimePermissionsGranted());
- ((SwitchPreference)preference).setChecked(permissionGroup.areRuntimePermissionsGranted(filterPermissions));
} catch (NameNotFoundException e) {
Log.e(LOG_TAG, "Problem getting package info for ", e);
}