From ad0ca96fcd271d1e07fd4b9a36ed6a7ea35971af Mon Sep 17 00:00:00 2001 From: Zoltan Szatmary-Ban Date: Thu, 26 Nov 2015 13:42:52 +0000 Subject: [PATCH] Add UI to Settings > Location for Managed Profile Location Control This CL adds Managed Profile Location Access control in the form of a switch preference. Bug:22541939 Change-Id: I1a2140c54e7386cda83ef0305f0840e4f8f9a6d1 --- res/values/strings.xml | 2 - res/xml/location_settings.xml | 20 ++-- .../settings/location/LocationSettings.java | 106 +++++++++++++----- 3 files changed, 83 insertions(+), 45 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index ecc465ec676..67b5eaa0b43 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2806,8 +2806,6 @@ My Location - - Work profile Location for work profile diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml index 2cd86f5d3c7..4ccc14a8d51 100644 --- a/res/xml/location_settings.xml +++ b/res/xml/location_settings.xml @@ -27,19 +27,13 @@ android:summary="@string/location_mode_location_off_title" /> - - - - - + admins = dpm.getActiveAdminsAsUser(mManagedProfile.getIdentifier()); + for (int i = 0; i < admins.size(); ++i) { + final ComponentName admin = admins.get(i); + Bundle restrictions = dpm.getUserRestrictions(admin, mManagedProfile.getIdentifier()); + if (restrictions != null && restrictions.getBoolean(UserManager.DISALLOW_SHARE_LOCATION, + false)) { + return admin; + } + } + return null; + } + + private boolean isManagedProfileRestrictedByBase() { + if (mManagedProfile == null) { + return false; + } + return mUm.hasBaseUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, mManagedProfile); + } + + private Preference.OnPreferenceClickListener mManagedProfileSwitchClickListener = + new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + final boolean switchState = mManagedProfileSwitch.isChecked(); + mUm.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, + !switchState, mManagedProfile); + mManagedProfileSwitch.setSummary(switchState ? + R.string.switch_on_text : R.string.switch_off_text); + return true; + } + }; + private class PackageEntryClickedListener implements Preference.OnPreferenceClickListener { private String mPackage;