diff options
author | Jiao Yuan <yuanjiao@codeaurora.org> | 2016-09-19 16:44:10 +0800 |
---|---|---|
committer | c_jyuan <yuanjiao@codeaurora.org> | 2016-09-20 15:41:32 +0800 |
commit | b787f076e6cb038717af62f1b6a7b55620dfd626 (patch) | |
tree | 1300783361b8cd7dd87efe6591e2f5d957065ea6 /src | |
parent | 2d5c59ce6a0def14934662b6741cbef6c07c7e71 (diff) | |
download | android_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-x | src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java | 32 |
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); } |