diff options
3 files changed, 17 insertions, 6 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 517395dd..72ac495c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -244,4 +244,7 @@ <!-- [CHAR LIMIT=NONE] Warning about how this app cannot have location permission disabled --> <string name="location_warning"><xliff:g id="app_name" example="Package Installer">%1$s</xliff:g> is a provider of location services for this device. Location access can be modified from location settings.</string> + <!-- [CHAR LIMIT=NONE] Warning message when turning off permission for system apps --> + <string name="system_warning">If you deny this permission, basic features of your device may no longer function as intended.</string> + </resources> diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java index b08e8f98..d88b9adc 100644 --- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java @@ -286,9 +286,11 @@ public final class AppPermissionsFragment extends SettingsWithHeader if (newValue == Boolean.TRUE) { group.grantRuntimePermissions(false); } else { - if (!group.hasRuntimePermission() && !mHasConfirmedRevoke) { + final boolean system = group.getApp().applicationInfo.isSystemApp(); + if (system || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) { new AlertDialog.Builder(getContext()) - .setMessage(R.string.old_sdk_deny_warning) + .setMessage(system ? R.string.system_warning + : R.string.old_sdk_deny_warning) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.grant_dialog_button_deny, new OnClickListener() { @@ -296,7 +298,9 @@ public final class AppPermissionsFragment extends SettingsWithHeader public void onClick(DialogInterface dialog, int which) { ((SwitchPreference) preference).setChecked(false); group.revokeRuntimePermissions(false); - mHasConfirmedRevoke = true; + if (!system) { + mHasConfirmedRevoke = true; + } } }) .show(); diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java index 7aacdc94..82494ec4 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java @@ -231,9 +231,11 @@ public final class PermissionAppsFragment extends PreferenceFragment implements if (newValue == Boolean.TRUE) { app.grantRuntimePermissions(); } else { - if (!app.hasRuntimePermissions() && !mHasConfirmedRevoke) { + final boolean system = app.getAppInfo().isSystemApp(); + if (system || (!app.hasRuntimePermissions() && !mHasConfirmedRevoke)) { new AlertDialog.Builder(getContext()) - .setMessage(R.string.old_sdk_deny_warning) + .setMessage(system ? R.string.system_warning + : R.string.old_sdk_deny_warning) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.grant_dialog_button_deny, new OnClickListener() { @@ -241,7 +243,9 @@ public final class PermissionAppsFragment extends PreferenceFragment implements public void onClick(DialogInterface dialog, int which) { ((SwitchPreference) preference).setChecked(false); app.revokeRuntimePermissions(); - mHasConfirmedRevoke = true; + if (!system) { + mHasConfirmedRevoke = true; + } } }) .show(); |