Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9303d97e authored by Irfan Sheriff's avatar Irfan Sheriff
Browse files

Remember Wifi state prior to tethering

We now remember whether Wifi was enabled
prior to enabling tethering. This will
allow us to restore Wifi when tethering
is disabled.

Bug: 2537983
Change-Id: Ia530563bd5647856d62cd59b67ae5156de6fd5d9
parent a6a74e22
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -95,24 +96,44 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
        mCheckBox.setOnPreferenceChangeListener(null);
    }

    public boolean onPreferenceChange(Preference preference, Object enable) {
    public boolean onPreferenceChange(Preference preference, Object value) {

        final ContentResolver cr = mContext.getContentResolver();
        boolean enable = (Boolean)value;

        /**
         * Disable Wifi if enabling tethering
         */
        int wifiState = mWifiManager.getWifiState();
        if ((Boolean)enable && ((wifiState == WifiManager.WIFI_STATE_ENABLING) ||
        if (enable && ((wifiState == WifiManager.WIFI_STATE_ENABLING) ||
                    (wifiState == WifiManager.WIFI_STATE_ENABLED))) {
            mWifiManager.setWifiEnabled(false);
            Settings.Secure.putInt(cr, Settings.Secure.WIFI_SAVED_STATE, 1);
        }

        if (mWifiManager.setWifiApEnabled(null, (Boolean)enable)) {
        if (mWifiManager.setWifiApEnabled(null, enable)) {
            /* Disable here, enabled on receiving success broadcast */
            mCheckBox.setEnabled(false);
        } else {
            mCheckBox.setSummary(R.string.wifi_error);
        }

        /**
         *  If needed, restore Wifi on tether disable
         */
        if (!enable) {
            int wifiSavedState = 0;
            try {
                wifiSavedState = Settings.Secure.getInt(cr, Settings.Secure.WIFI_SAVED_STATE);
            } catch (Settings.SettingNotFoundException e) {
                ;
            }
            if (wifiSavedState == 1) {
                mWifiManager.setWifiEnabled(true);
                Settings.Secure.putInt(cr, Settings.Secure.WIFI_SAVED_STATE, 0);
            }
        }

        return false;
    }