diff options
author | Maggie Benthall <mbenthall@google.com> | 2013-02-22 15:10:35 -0500 |
---|---|---|
committer | Maggie Benthall <mbenthall@google.com> | 2013-02-25 16:49:32 -0500 |
commit | ea6260d887a7065d65d94be58c05903b3d1fc359 (patch) | |
tree | da1ed50e4e774cdd25f52fe27ff4cfb3540fa593 | |
parent | 1022e801bac5bbb17c6aeccf1384a5a21fdeb836 (diff) | |
download | packages_apps_Settings-ea6260d887a7065d65d94be58c05903b3d1fc359.tar.gz packages_apps_Settings-ea6260d887a7065d65d94be58c05903b3d1fc359.tar.bz2 packages_apps_Settings-ea6260d887a7065d65d94be58c05903b3d1fc359.zip |
Respect user restriction against toggling location sharing settings.
Change-Id: I1e629129fc9b3b224d4f4402b56d904df9edc43f
-rw-r--r-- | src/com/android/settings/LocationSettings.java | 31 | ||||
-rw-r--r-- | src/com/android/settings/widget/SettingsAppWidgetProvider.java | 18 |
2 files changed, 38 insertions, 11 deletions
diff --git a/src/com/android/settings/LocationSettings.java b/src/com/android/settings/LocationSettings.java index 0e5018819..b73dccd37 100644 --- a/src/com/android/settings/LocationSettings.java +++ b/src/com/android/settings/LocationSettings.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.location.LocationManager; +import android.os.UserManager; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.PreferenceScreen; @@ -92,6 +93,15 @@ public class LocationSettings extends SettingsPreferenceFragment mGps = (CheckBoxPreference) root.findPreference(KEY_LOCATION_GPS); mAssistedGps = (CheckBoxPreference) root.findPreference(KEY_ASSISTED_GPS); + // Only enable these controls if this user is allowed to change location + // sharing settings. + final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE); + boolean isToggleAllowed = um.isLocationSharingToggleAllowed(); + if (mLocationAccess != null) mLocationAccess.setEnabled(isToggleAllowed); + if (mNetwork != null) mNetwork.setEnabled(isToggleAllowed); + if (mGps != null) mGps.setEnabled(isToggleAllowed); + if (mAssistedGps != null) mAssistedGps.setEnabled(isToggleAllowed); + mLocationAccess.setOnPreferenceChangeListener(this); return root; } @@ -119,15 +129,20 @@ public class LocationSettings extends SettingsPreferenceFragment @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { final ContentResolver cr = getContentResolver(); + final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE); if (preference == mNetwork) { - Settings.Secure.setLocationProviderEnabled(cr, - LocationManager.NETWORK_PROVIDER, mNetwork.isChecked()); + if (um.isLocationSharingToggleAllowed()) { + Settings.Secure.setLocationProviderEnabled(cr, + LocationManager.NETWORK_PROVIDER, mNetwork.isChecked()); + } } else if (preference == mGps) { boolean enabled = mGps.isChecked(); - Settings.Secure.setLocationProviderEnabled(cr, - LocationManager.GPS_PROVIDER, enabled); - if (mAssistedGps != null) { - mAssistedGps.setEnabled(enabled); + if (um.isLocationSharingToggleAllowed()) { + Settings.Secure.setLocationProviderEnabled(cr, + LocationManager.GPS_PROVIDER, enabled); + if (mAssistedGps != null) { + mAssistedGps.setEnabled(enabled); + } } } else if (preference == mAssistedGps) { Settings.Global.putInt(cr, Settings.Global.ASSISTED_GPS_ENABLED, @@ -170,6 +185,10 @@ public class LocationSettings extends SettingsPreferenceFragment /** Enable or disable all providers when the master toggle is changed. */ private void onToggleLocationAccess(boolean checked) { + final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE); + if (! um.isLocationSharingToggleAllowed()) { + return; + } final ContentResolver cr = getContentResolver(); Settings.Secure.setLocationProviderEnabled(cr, LocationManager.GPS_PROVIDER, checked); diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java index 75a83ccc3..ac9df9f9c 100644 --- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java +++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java @@ -35,6 +35,7 @@ import android.os.IPowerManager; import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.UserManager; import android.provider.Settings; import android.util.Log; import android.widget.RemoteViews; @@ -538,11 +539,18 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... args) { - Settings.Secure.setLocationProviderEnabled( - resolver, - LocationManager.GPS_PROVIDER, - desiredState); - return desiredState; + final UserManager um = + (UserManager) context.getSystemService(Context.USER_SERVICE); + if (um.isLocationSharingToggleAllowed()) { + Settings.Secure.setLocationProviderEnabled( + resolver, + LocationManager.GPS_PROVIDER, + desiredState); + return desiredState; + } + return Settings.Secure.isLocationProviderEnabled( + resolver, + LocationManager.GPS_PROVIDER); } @Override |