diff options
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/settings/widget/SettingsAppWidgetProvider.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java index 50f6671..71994a9 100644 --- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java +++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java @@ -521,8 +521,14 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { @Override public int getActualState(Context context) { ContentResolver resolver = context.getContentResolver(); - return Settings.Secure.getLocationMode(resolver) != Settings.Secure.LOCATION_MODE_OFF - ? STATE_ENABLED : STATE_DISABLED; + int currentLocationMode = Settings.Secure.getLocationMode(resolver); + switch (currentLocationMode) { + case Settings.Secure.LOCATION_MODE_BATTERY_SAVING: + case Settings.Secure.LOCATION_MODE_OFF: + return STATE_DISABLED; + } + + return STATE_ENABLED; } @Override @@ -543,13 +549,12 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider { if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) { int mode = desiredState ? Settings.Secure.LOCATION_MODE_HIGH_ACCURACY - : Settings.Secure.LOCATION_MODE_OFF; + : Settings.Secure.LOCATION_MODE_BATTERY_SAVING; Settings.Secure.setLocationMode(resolver, mode); return desiredState; } - return Settings.Secure.getLocationMode(resolver) - != Settings.Secure.LOCATION_MODE_OFF; + return getActualState(context) == STATE_ENABLED; } @Override |