summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaggie Benthall <mbenthall@google.com>2013-02-22 15:10:35 -0500
committerMaggie Benthall <mbenthall@google.com>2013-02-25 16:49:32 -0500
commitea6260d887a7065d65d94be58c05903b3d1fc359 (patch)
treeda1ed50e4e774cdd25f52fe27ff4cfb3540fa593
parent1022e801bac5bbb17c6aeccf1384a5a21fdeb836 (diff)
downloadpackages_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.java31
-rw-r--r--src/com/android/settings/widget/SettingsAppWidgetProvider.java18
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