Fix "Turn on Wi-Fi scanning?" does not pop up when clicking "Turn on Wi-Fi automatically"

We should make sure both 'Use location' & 'Wi-Fi scanning' are enabled
before calling setWifiWakeupEnabled.

Bug: 131777439
Test: manual
Change-Id: I602917cfa7c5581ecb414e8c44b4e20c8f9ea78d
This commit is contained in:
Arc Wang
2019-05-06 18:29:06 +08:00
parent 30a9392b21
commit 454553ed52
2 changed files with 39 additions and 11 deletions

View File

@@ -97,15 +97,22 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController
return false;
}
if (!mLocationManager.isLocationEnabled()) {
final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
mFragment.startActivity(intent);
} else if (getWifiWakeupEnabled()) {
// TODO(b/132391311): WifiWakeupPreferenceController is essentially reimplementing
// TogglePreferenceController. Refactor it into TogglePreferenceController.
// Toggle wifi-wakeup setting between 1/0 based on its current state, and some other checks.
if (isWifiWakeupAvailable()) {
setWifiWakeupEnabled(false);
} else if (!getWifiScanningEnabled()) {
showScanningDialog();
} else {
setWifiWakeupEnabled(true);
if (!mLocationManager.isLocationEnabled()) {
final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
mFragment.startActivityForResult(intent, WIFI_WAKEUP_REQUEST_CODE);
return true;
} else if (!getWifiScanningEnabled()) {
showScanningDialog();
} else {
setWifiWakeupEnabled(true);
}
}
updateState(mPreference);
@@ -124,9 +131,7 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController
}
final SwitchPreference enableWifiWakeup = (SwitchPreference) preference;
enableWifiWakeup.setChecked(getWifiWakeupEnabled()
&& getWifiScanningEnabled()
&& mLocationManager.isLocationEnabled());
enableWifiWakeup.setChecked(isWifiWakeupAvailable());
if (!mLocationManager.isLocationEnabled()) {
preference.setSummary(getNoLocationSummary());
} else {
@@ -145,7 +150,7 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController
if (requestCode != WIFI_WAKEUP_REQUEST_CODE) {
return;
}
if (mLocationManager.isLocationEnabled()) {
if (mLocationManager.isLocationEnabled() && getWifiScanningEnabled()) {
setWifiWakeupEnabled(true);
}
updateState(mPreference);
@@ -168,6 +173,15 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController
Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1;
}
/**
* Wifi wakeup is available only when both location and Wi-Fi scanning are enabled.
*/
private boolean isWifiWakeupAvailable() {
return getWifiWakeupEnabled()
&& getWifiScanningEnabled()
&& mLocationManager.isLocationEnabled();
}
private void setWifiWakeupEnabled(boolean enabled) {
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
enabled ? 1 : 0);