diff options
-rw-r--r-- | core/java/android/provider/Settings.java | 6 | ||||
-rw-r--r-- | services/java/com/android/server/WifiService.java | 18 |
2 files changed, 20 insertions, 4 deletions
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 final class Settings { 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 @@ public class WifiService extends IWifiManager.Stub { * 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 @@ public class WifiService extends IWifiManager.Stub { } } + 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 { |