From 724784b6b90f3d844e807dea1a95c687d592ea27 Mon Sep 17 00:00:00 2001 From: Svet Ganov Date: Thu, 2 Jul 2015 17:34:41 -0700 Subject: Show basic feature warning for default granted permissions bug:22174223 Change-Id: Ic5c9a0ed9c17353145fff6e45483e92181fd9b86 --- .../permission/model/AppPermissionGroup.java | 12 ++++++++++++ .../packageinstaller/permission/model/Permission.java | 4 ++++ .../packageinstaller/permission/model/PermissionApps.java | 4 ++++ .../permission/ui/AppPermissionsFragment.java | 8 ++++---- .../permission/ui/PermissionAppsFragment.java | 8 ++++---- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index 6bd15aff..e9d7eaf2 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -207,6 +207,18 @@ public final class AppPermissionGroup implements Comparable return mAppSupportsRuntimePermissions; } + + public boolean hasGrantedByDefaultPermission() { + final int permissionCount = mPermissions.size(); + for (int i = 0; i < permissionCount; i++) { + Permission permission = mPermissions.valueAt(i); + if (permission.isGrantedByDefault()) { + return true; + } + } + return false; + } + public boolean hasAppOpPermission() { final int permissionCount = mPermissions.size(); for (int i = 0; i < permissionCount; i++) { diff --git a/src/com/android/packageinstaller/permission/model/Permission.java b/src/com/android/packageinstaller/permission/model/Permission.java index da234bdb..1be4e75b 100644 --- a/src/com/android/packageinstaller/permission/model/Permission.java +++ b/src/com/android/packageinstaller/permission/model/Permission.java @@ -88,6 +88,10 @@ public final class Permission { return (mFlags & PackageManager.FLAG_PERMISSION_USER_SET) != 0; } + public boolean isGrantedByDefault() { + return (mFlags & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0; + } + public void setUserSet(boolean userSet) { if (userSet) { mFlags |= PackageManager.FLAG_PERMISSION_USER_SET; diff --git a/src/com/android/packageinstaller/permission/model/PermissionApps.java b/src/com/android/packageinstaller/permission/model/PermissionApps.java index b8ba650d..9c76f211 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionApps.java +++ b/src/com/android/packageinstaller/permission/model/PermissionApps.java @@ -319,6 +319,10 @@ public class PermissionApps { return mAppPermissionGroup.isSystemFixed(); } + public boolean hasGrantedByDefaultPermissions() { + return mAppPermissionGroup.hasGrantedByDefaultPermission(); + } + public boolean hasRuntimePermissions() { return mAppPermissionGroup.hasRuntimePermission(); } diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java index 39f4cbaf..483f6ba7 100644 --- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java @@ -264,10 +264,10 @@ public final class AppPermissionsFragment extends SettingsWithHeader if (newValue == Boolean.TRUE) { group.grantRuntimePermissions(false); } else { - final boolean system = group.getApp().applicationInfo.isSystemApp(); - if (system || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) { + final boolean grantedByDefault = group.hasGrantedByDefaultPermission(); + if (grantedByDefault || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) { new AlertDialog.Builder(getContext()) - .setMessage(system ? R.string.system_warning + .setMessage(grantedByDefault ? R.string.system_warning : R.string.old_sdk_deny_warning) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.grant_dialog_button_deny, @@ -276,7 +276,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader public void onClick(DialogInterface dialog, int which) { ((SwitchPreference) preference).setChecked(false); group.revokeRuntimePermissions(false); - if (!system) { + if (!grantedByDefault) { mHasConfirmedRevoke = true; } } diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java index f749089b..cb818cfb 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java @@ -214,10 +214,10 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple if (newValue == Boolean.TRUE) { app.grantRuntimePermissions(); } else { - final boolean system = app.getAppInfo().isSystemApp(); - if (system || (!app.hasRuntimePermissions() && !mHasConfirmedRevoke)) { + final boolean grantedByDefault = app.hasGrantedByDefaultPermissions(); + if (grantedByDefault || (!app.hasRuntimePermissions() && !mHasConfirmedRevoke)) { new AlertDialog.Builder(getContext()) - .setMessage(system ? R.string.system_warning + .setMessage(grantedByDefault ? R.string.system_warning : R.string.old_sdk_deny_warning) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.grant_dialog_button_deny, @@ -226,7 +226,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple public void onClick(DialogInterface dialog, int which) { ((SwitchPreference) preference).setChecked(false); app.revokeRuntimePermissions(); - if (!system) { + if (!grantedByDefault) { mHasConfirmedRevoke = true; } } -- cgit v1.2.3