Merge "Add mobile hotspot provisioning support"
This commit is contained in:
committed by
Android (Google) Code Review
commit
8dcb0252ea
@@ -40,6 +40,7 @@ import android.os.Environment;
|
|||||||
import android.preference.CheckBoxPreference;
|
import android.preference.CheckBoxPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceScreen;
|
import android.preference.PreferenceScreen;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewParent;
|
import android.view.ViewParent;
|
||||||
import android.webkit.WebView;
|
import android.webkit.WebView;
|
||||||
@@ -52,7 +53,7 @@ import java.util.Locale;
|
|||||||
* Displays preferences for Tethering.
|
* Displays preferences for Tethering.
|
||||||
*/
|
*/
|
||||||
public class TetherSettings extends SettingsPreferenceFragment
|
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 USB_TETHER_SETTINGS = "usb_tether_settings";
|
||||||
private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
|
private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
|
||||||
@@ -70,6 +71,8 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
private CheckBoxPreference mUsbTether;
|
private CheckBoxPreference mUsbTether;
|
||||||
|
|
||||||
private WifiApEnabler mWifiApEnabler;
|
private WifiApEnabler mWifiApEnabler;
|
||||||
|
private CheckBoxPreference mEnableWifiAp;
|
||||||
|
private static final int MHS_REQUEST = 0;
|
||||||
|
|
||||||
private CheckBoxPreference mBluetoothTether;
|
private CheckBoxPreference mBluetoothTether;
|
||||||
|
|
||||||
@@ -89,7 +92,6 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
private String[] mSecurityType;
|
private String[] mSecurityType;
|
||||||
private Preference mCreateNetwork;
|
private Preference mCreateNetwork;
|
||||||
private CheckBoxPreference mEnableWifiAp;
|
|
||||||
|
|
||||||
private WifiApDialog mDialog;
|
private WifiApDialog mDialog;
|
||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
@@ -112,7 +114,7 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
BluetoothProfile.PAN);
|
BluetoothProfile.PAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckBoxPreference enableWifiAp =
|
mEnableWifiAp =
|
||||||
(CheckBoxPreference) findPreference(ENABLE_WIFI_AP);
|
(CheckBoxPreference) findPreference(ENABLE_WIFI_AP);
|
||||||
Preference wifiApSettings = findPreference(WIFI_AP_SSID_AND_SECURITY);
|
Preference wifiApSettings = findPreference(WIFI_AP_SSID_AND_SECURITY);
|
||||||
mUsbTether = (CheckBoxPreference) findPreference(USB_TETHER_SETTINGS);
|
mUsbTether = (CheckBoxPreference) findPreference(USB_TETHER_SETTINGS);
|
||||||
@@ -135,10 +137,10 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (wifiAvailable) {
|
if (wifiAvailable) {
|
||||||
mWifiApEnabler = new WifiApEnabler(activity, enableWifiAp);
|
mWifiApEnabler = new WifiApEnabler(activity, mEnableWifiAp);
|
||||||
initWifiTethering();
|
initWifiTethering();
|
||||||
} else {
|
} else {
|
||||||
getPreferenceScreen().removePreference(enableWifiAp);
|
getPreferenceScreen().removePreference(mEnableWifiAp);
|
||||||
getPreferenceScreen().removePreference(wifiApSettings);
|
getPreferenceScreen().removePreference(wifiApSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +164,6 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
mSecurityType = getResources().getStringArray(R.array.wifi_ap_security);
|
mSecurityType = getResources().getStringArray(R.array.wifi_ap_security);
|
||||||
|
|
||||||
mCreateNetwork = findPreference(WIFI_AP_SSID_AND_SECURITY);
|
mCreateNetwork = findPreference(WIFI_AP_SSID_AND_SECURITY);
|
||||||
mEnableWifiAp = (CheckBoxPreference) findPreference(ENABLE_WIFI_AP);
|
|
||||||
|
|
||||||
if (mWifiConfig == null) {
|
if (mWifiConfig == null) {
|
||||||
final String s = activity.getString(
|
final String s = activity.getString(
|
||||||
@@ -315,6 +316,7 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
if (intent != null) mTetherChangeReceiver.onReceive(activity, intent);
|
if (intent != null) mTetherChangeReceiver.onReceive(activity, intent);
|
||||||
if (mWifiApEnabler != null) {
|
if (mWifiApEnabler != null) {
|
||||||
|
mEnableWifiAp.setOnPreferenceChangeListener(this);
|
||||||
mWifiApEnabler.resume();
|
mWifiApEnabler.resume();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -327,6 +329,7 @@ public class TetherSettings extends SettingsPreferenceFragment
|
|||||||
getActivity().unregisterReceiver(mTetherChangeReceiver);
|
getActivity().unregisterReceiver(mTetherChangeReceiver);
|
||||||
mTetherChangeReceiver = null;
|
mTetherChangeReceiver = null;
|
||||||
if (mWifiApEnabler != null) {
|
if (mWifiApEnabler != null) {
|
||||||
|
mEnableWifiAp.setOnPreferenceChangeListener(null);
|
||||||
mWifiApEnabler.pause();
|
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
|
@Override
|
||||||
public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
|
public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
|
||||||
ConnectivityManager cm =
|
ConnectivityManager cm =
|
||||||
|
@@ -33,14 +33,13 @@ import android.net.wifi.SupplicantState;
|
|||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.preference.Preference;
|
|
||||||
import android.preference.CheckBoxPreference;
|
import android.preference.CheckBoxPreference;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
|
public class WifiApEnabler {
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final CheckBoxPreference mCheckBox;
|
private final CheckBoxPreference mCheckBox;
|
||||||
private final CharSequence mOriginalSummary;
|
private final CharSequence mOriginalSummary;
|
||||||
@@ -92,12 +91,10 @@ public class WifiApEnabler implements Preference.OnPreferenceChangeListener {
|
|||||||
public void resume() {
|
public void resume() {
|
||||||
mContext.registerReceiver(mReceiver, mIntentFilter);
|
mContext.registerReceiver(mReceiver, mIntentFilter);
|
||||||
enableWifiCheckBox();
|
enableWifiCheckBox();
|
||||||
mCheckBox.setOnPreferenceChangeListener(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pause() {
|
public void pause() {
|
||||||
mContext.unregisterReceiver(mReceiver);
|
mContext.unregisterReceiver(mReceiver);
|
||||||
mCheckBox.setOnPreferenceChangeListener(null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enableWifiCheckBox() {
|
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();
|
final ContentResolver cr = mContext.getContentResolver();
|
||||||
boolean enable = (Boolean)value;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disable Wifi if enabling tethering
|
* 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);
|
Settings.Secure.putInt(cr, Settings.Secure.WIFI_SAVED_STATE, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateConfigSummary(WifiConfiguration wifiConfig) {
|
public void updateConfigSummary(WifiConfiguration wifiConfig) {
|
||||||
|
Reference in New Issue
Block a user