From acd09293116133b6a86d348e011d8347a03266ec Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Fri, 28 Aug 2015 18:39:21 -0700 Subject: Show location permission toggle for location provider bug:23528665 Change-Id: Id3a0838c3421b56dcf47c86043bb51c670268d03 --- .../permission/model/AppPermissionGroup.java | 2 +- .../permission/model/PermissionStatusReceiver.java | 2 +- .../permission/ui/AppPermissionsFragment.java | 4 ++-- .../permission/ui/PermissionAppsFragment.java | 14 +++++++++++++- .../packageinstaller/permission/utils/LocationUtils.java | 2 +- .../android/packageinstaller/permission/utils/Utils.java | 8 +++++--- 6 files changed, 23 insertions(+), 9 deletions(-) (limited to 'src/com/android/packageinstaller') diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index 633336c3..9d65bcc0 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -265,7 +265,7 @@ public final class AppPermissionGroup implements Comparable } public boolean areRuntimePermissionsGranted() { - if (LocationUtils.isLocked(mName, mPackageInfo.packageName)) { + if (LocationUtils.isLocationGroupAndProvider(mName, mPackageInfo.packageName)) { return LocationUtils.isLocationEnabled(mContext); } final int permissionCount = mPermissions.size(); diff --git a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java index 52fb874e..7bae18f3 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java +++ b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java @@ -75,7 +75,7 @@ public class PermissionStatusReceiver extends BroadcastReceiver { int additionalCount = 0; for (AppPermissionGroup group : appPermissions.getPermissionGroups()) { - if (Utils.shouldShowPermission(group)) { + if (Utils.shouldShowPermission(group, pkg)) { totalCount++; if (group.areRuntimePermissionsGranted()) { grantedCount++; diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java index cf0d7c2f..aa0f77a6 100644 --- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java @@ -205,7 +205,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader extraPerms.setTitle(R.string.additional_permissions); for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) { - if (!Utils.shouldShowPermission(group)) { + if (!Utils.shouldShowPermission(group, mAppPermissions.getPackageInfo().packageName)) { continue; } @@ -276,7 +276,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader addToggledGroup(group); - if (LocationUtils.isLocked(group.getName(), group.getApp().packageName)) { + if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) { LocationUtils.showLocationDialog(getContext(), mAppPermissions.getAppLabel()); return false; } diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java index 2a5f7c7e..8dacd037 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java @@ -219,6 +219,17 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple } if (existingPref != null) { + // If existing preference - only update its state. + if (app.isPolicyFixed()) { + existingPref.setSummary(getString( + R.string.permission_summary_enforced_by_policy)); + } + existingPref.setPersistent(false); + existingPref.setEnabled(!app.isPolicyFixed()); + if (existingPref instanceof SwitchPreference) { + ((SwitchPreference) existingPref) + .setChecked(app.areRuntimePermissionsGranted()); + } continue; } @@ -316,7 +327,8 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple addToggledGroup(app.getPackageName(), app.getPermissionGroup()); - if (LocationUtils.isLocked(mPermissionApps.getGroupName(), app.getPackageName())) { + if (LocationUtils.isLocationGroupAndProvider(mPermissionApps.getGroupName(), + app.getPackageName())) { LocationUtils.showLocationDialog(getContext(), app.getLabel()); return false; } diff --git a/src/com/android/packageinstaller/permission/utils/LocationUtils.java b/src/com/android/packageinstaller/permission/utils/LocationUtils.java index 4c4ea6e3..512fcf44 100644 --- a/src/com/android/packageinstaller/permission/utils/LocationUtils.java +++ b/src/com/android/packageinstaller/permission/utils/LocationUtils.java @@ -70,7 +70,7 @@ public class LocationUtils { Settings.Secure.LOCATION_MODE_OFF) != Settings.Secure.LOCATION_MODE_OFF; } - public static boolean isLocked(String groupName, String packageName) { + public static boolean isLocationGroupAndProvider(String groupName, String packageName) { return LOCATION_PERMISSION.equals(groupName) && isNetworkLocationProvider(packageName); } diff --git a/src/com/android/packageinstaller/permission/utils/Utils.java b/src/com/android/packageinstaller/permission/utils/Utils.java index 552d4ad4..7b9a2b65 100644 --- a/src/com/android/packageinstaller/permission/utils/Utils.java +++ b/src/com/android/packageinstaller/permission/utils/Utils.java @@ -76,10 +76,11 @@ public class Utils { return false; } - public static boolean shouldShowPermission(AppPermissionGroup group) { + public static boolean shouldShowPermission(AppPermissionGroup group, String packageName) { // We currently will not show permissions fixed by the system. // which is what the system does for system components. - if (group.isSystemFixed()) { + if (group.isSystemFixed() && !LocationUtils.isLocationGroupAndProvider( + group.getName(), packageName)) { return false; } @@ -102,7 +103,8 @@ public class Utils { public static boolean shouldShowPermission(PermissionApp app) { // We currently will not show permissions fixed by the system // which is what the system does for system components. - if (app.isSystemFixed()) { + if (app.isSystemFixed() && !LocationUtils.isLocationGroupAndProvider( + app.getPermissionGroup().getName(), app.getPackageName())) { return false; } -- cgit v1.2.3