settings variable for wifi saved state
We add a variable for saving wifi state
to restore after tethering.
Bring up wifi on boot up if the state indicates so.
Bug: 2537983
Change-Id: I9c6548b93df6fcbc0cec1e6b857f7224dc6d1b2c
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 6e37f69..b8e5747 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2508,11 +2508,13 @@
public static final String WIFI_ON = "wifi_on";
/**
- * Whether the Wi-Fi AP should be on.
+ * Used to save the Wifi_ON state prior to tethering.
+ * This state will be checked to restore Wifi after
+ * the user turns off tethering.
*
* @hide
*/
- public static final String WIFI_AP_ON = "wifi_ap_on";
+ public static final String WIFI_SAVED_STATE = "wifi_saved_state";
/**
* AP SSID
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java
index 6fe4c98..e4d7623 100644
--- a/services/java/com/android/server/WifiService.java
+++ b/services/java/com/android/server/WifiService.java
@@ -264,10 +264,11 @@
* if needed
*/
public void startWifi() {
- boolean wifiEnabled = getPersistedWifiEnabled();
+ /* Start if Wi-Fi is enabled or the saved state indicates Wi-Fi was on */
+ boolean wifiEnabled = getPersistedWifiEnabled() || testAndClearWifiSavedState();
Slog.i(TAG, "WifiService starting up with Wi-Fi " +
(wifiEnabled ? "enabled" : "disabled"));
- setWifiEnabledBlocking(wifiEnabled, false, Process.myUid());
+ setWifiEnabledBlocking(wifiEnabled, true, Process.myUid());
}
private void updateTetherState(ArrayList<String> available, ArrayList<String> tethered) {
@@ -316,6 +317,19 @@
}
}
+ private boolean testAndClearWifiSavedState() {
+ final ContentResolver cr = mContext.getContentResolver();
+ int wifiSavedState = 0;
+ try {
+ wifiSavedState = Settings.Secure.getInt(cr, Settings.Secure.WIFI_SAVED_STATE);
+ if(wifiSavedState == 1)
+ Settings.Secure.putInt(cr, Settings.Secure.WIFI_SAVED_STATE, 0);
+ } catch (Settings.SettingNotFoundException e) {
+ ;
+ }
+ return (wifiSavedState == 1);
+ }
+
private boolean getPersistedWifiEnabled() {
final ContentResolver cr = mContext.getContentResolver();
try {