diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2016-10-10 09:11:45 -0600 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2016-10-10 09:11:45 -0600 |
commit | ebcfa18461cf6280c09ba119102e039761b3330d (patch) | |
tree | 1300783361b8cd7dd87efe6591e2f5d957065ea6 | |
parent | 8ef15c53f325badc31abee4e08cf8f6301606005 (diff) | |
parent | 55007fdac04f2e1e492ed7fbf6bc839c931fd8d4 (diff) | |
download | android_packages_apps_PackageInstaller-ebcfa18461cf6280c09ba119102e039761b3330d.tar.gz android_packages_apps_PackageInstaller-ebcfa18461cf6280c09ba119102e039761b3330d.tar.bz2 android_packages_apps_PackageInstaller-ebcfa18461cf6280c09ba119102e039761b3330d.zip |
Merge 55007fdac04f2e1e492ed7fbf6bc839c931fd8d4 on remote branch
Change-Id: I03ba6cd68b9dca9e6dc4b4e1a24ee5625cca6e25
-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); } |