diff --git a/src/com/android/settings/location/LocationEnabler.java b/src/com/android/settings/location/LocationEnabler.java index 4dcdac0c456..28ee2138abb 100644 --- a/src/com/android/settings/location/LocationEnabler.java +++ b/src/com/android/settings/location/LocationEnabler.java @@ -34,8 +34,10 @@ import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; import static com.android.settingslib.Utils.updateLocationMode; +import static com.android.settingslib.Utils.updateLocationEnabled; import static com.android.settingslib.RestrictedLockUtils.checkIfRestrictionEnforced; + /** * A class that listens to location settings change and modifies location settings * settings. @@ -106,6 +108,25 @@ public class LocationEnabler implements LifecycleObserver, OnResume, OnPause { } } + void setLocationEnabled(boolean enabled) { + final int currentMode = Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF); + + if (isRestricted()) { + // Location toggling disabled by user restriction. Read the current location mode to + // update the location master switch. + if (Log.isLoggable(TAG, Log.INFO)) { + Log.i(TAG, "Restricted user, not setting location mode"); + } + if (mListener != null) { + mListener.onLocationModeChanged(currentMode, true); + } + return; + } + updateLocationEnabled(mContext, enabled, UserHandle.myUserId()); + refreshLocationMode(); + } + void setLocationMode(int mode) { final int currentMode = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF); diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java index d0fca16629d..85c049db1d5 100644 --- a/src/com/android/settings/location/LocationSettings.java +++ b/src/com/android/settings/location/LocationSettings.java @@ -47,15 +47,8 @@ import java.util.List; *