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

Commit 8dcb0252 authored by Irfan Sheriff's avatar Irfan Sheriff Committed by Android (Google) Code Review
Browse files

Merge "Add mobile hotspot provisioning support"

parents 051cda2e aa3d2c40
Loading
Loading
Loading
Loading
+38 −6
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.os.Environment;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.text.TextUtils;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.webkit.WebView;
@@ -52,7 +53,7 @@ import java.util.Locale;
 * Displays preferences for Tethering.
 */
public class TetherSettings extends SettingsPreferenceFragment
        implements DialogInterface.OnClickListener {
        implements DialogInterface.OnClickListener, Preference.OnPreferenceChangeListener {

    private static final String USB_TETHER_SETTINGS = "usb_tether_settings";
    private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
@@ -70,6 +71,8 @@ public class TetherSettings extends SettingsPreferenceFragment
    private CheckBoxPreference mUsbTether;

    private WifiApEnabler mWifiApEnabler;
    private CheckBoxPreference mEnableWifiAp;
    private static final int MHS_REQUEST = 0;

    private CheckBoxPreference mBluetoothTether;

@@ -89,7 +92,6 @@ public class TetherSettings extends SettingsPreferenceFragment

    private String[] mSecurityType;
    private Preference mCreateNetwork;
    private CheckBoxPreference mEnableWifiAp;

    private WifiApDialog mDialog;
    private WifiManager mWifiManager;
@@ -112,7 +114,7 @@ public class TetherSettings extends SettingsPreferenceFragment
                    BluetoothProfile.PAN);
        }

        CheckBoxPreference enableWifiAp =
        mEnableWifiAp =
                (CheckBoxPreference) findPreference(ENABLE_WIFI_AP);
        Preference wifiApSettings = findPreference(WIFI_AP_SSID_AND_SECURITY);
        mUsbTether = (CheckBoxPreference) findPreference(USB_TETHER_SETTINGS);
@@ -135,10 +137,10 @@ public class TetherSettings extends SettingsPreferenceFragment
        }

        if (wifiAvailable) {
            mWifiApEnabler = new WifiApEnabler(activity, enableWifiAp);
            mWifiApEnabler = new WifiApEnabler(activity, mEnableWifiAp);
            initWifiTethering();
        } else {
            getPreferenceScreen().removePreference(enableWifiAp);
            getPreferenceScreen().removePreference(mEnableWifiAp);
            getPreferenceScreen().removePreference(wifiApSettings);
        }

@@ -162,7 +164,6 @@ public class TetherSettings extends SettingsPreferenceFragment
        mSecurityType = getResources().getStringArray(R.array.wifi_ap_security);

        mCreateNetwork = findPreference(WIFI_AP_SSID_AND_SECURITY);
        mEnableWifiAp = (CheckBoxPreference) findPreference(ENABLE_WIFI_AP);

        if (mWifiConfig == null) {
            final String s = activity.getString(
@@ -315,6 +316,7 @@ public class TetherSettings extends SettingsPreferenceFragment

        if (intent != null) mTetherChangeReceiver.onReceive(activity, intent);
        if (mWifiApEnabler != null) {
            mEnableWifiAp.setOnPreferenceChangeListener(this);
            mWifiApEnabler.resume();
        }

@@ -327,6 +329,7 @@ public class TetherSettings extends SettingsPreferenceFragment
        getActivity().unregisterReceiver(mTetherChangeReceiver);
        mTetherChangeReceiver = null;
        if (mWifiApEnabler != null) {
            mEnableWifiAp.setOnPreferenceChangeListener(null);
            mWifiApEnabler.pause();
        }
    }
@@ -447,6 +450,35 @@ public class TetherSettings extends SettingsPreferenceFragment
        }
    }

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

        if (enable) {
            //Check if provisioning is needed
            String intentStr = getActivity().getString(
                    com.android.internal.R.string.config_mobile_hotspot_provision_intent);

            if (TextUtils.isEmpty(intentStr)) {
                mWifiApEnabler.setSoftapEnabled(true);
            } else {
                Intent intent = new Intent(intentStr);
                startActivityForResult(intent, MHS_REQUEST);
            }
        } else {
            mWifiApEnabler.setSoftapEnabled(false);
        }
        return false;
    }

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        if (requestCode == MHS_REQUEST) {
            if (resultCode == Activity.RESULT_OK) {
                mWifiApEnabler.setSoftapEnabled(true);
            }
        }
    }

    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
        ConnectivityManager cm =
+2 −10
Original line number Diff line number Diff line
@@ -33,14 +33,13 @@ import android.net.wifi.SupplicantState;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.preference.Preference;
import android.preference.CheckBoxPreference;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;

public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
public class WifiApEnabler {
    private final Context mContext;
    private final CheckBoxPreference mCheckBox;
    private final CharSequence mOriginalSummary;
@@ -92,12 +91,10 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
    public void resume() {
        mContext.registerReceiver(mReceiver, mIntentFilter);
        enableWifiCheckBox();
        mCheckBox.setOnPreferenceChangeListener(this);
    }

    public void pause() {
        mContext.unregisterReceiver(mReceiver);
        mCheckBox.setOnPreferenceChangeListener(null);
    }

    private void enableWifiCheckBox() {
@@ -111,11 +108,8 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
        }
    }

    public boolean onPreferenceChange(Preference preference, Object value) {

    public void setSoftapEnabled(boolean enable) {
        final ContentResolver cr = mContext.getContentResolver();
        boolean enable = (Boolean)value;

        /**
         * Disable Wifi if enabling tethering
         */
@@ -148,8 +142,6 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
                Settings.Secure.putInt(cr, Settings.Secure.WIFI_SAVED_STATE, 0);
            }
        }

        return false;
    }

    public void updateConfigSummary(WifiConfiguration wifiConfig) {