summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/strings.xml3
-rw-r--r--src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java10
-rw-r--r--src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java10
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();