diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2016-09-24 00:46:54 -0600 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2016-09-24 00:46:54 -0600 |
commit | 55007fdac04f2e1e492ed7fbf6bc839c931fd8d4 (patch) | |
tree | 1300783361b8cd7dd87efe6591e2f5d957065ea6 | |
parent | 7d83a5dc0a7721378193845d4fba0dc54d186707 (diff) | |
parent | b787f076e6cb038717af62f1b6a7b55620dfd626 (diff) | |
download | android_packages_apps_PackageInstaller-55007fdac04f2e1e492ed7fbf6bc839c931fd8d4.tar.gz android_packages_apps_PackageInstaller-55007fdac04f2e1e492ed7fbf6bc839c931fd8d4.tar.bz2 android_packages_apps_PackageInstaller-55007fdac04f2e1e492ed7fbf6bc839c931fd8d4.zip |
Promotion of android-framework.lnx.2.0-00010.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
1068254 I157a4b0aab0e8d4f9719b4ff4d68f7eb11922ec3 Add dialog when revoke one permission
Change-Id: Ibedae37883c76ee28402058a4a425e0b1e7ac1fe
CRs-Fixed: 1068254
-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); } |