Add support for WPA for soft Ap
Bug: 2771935 Change-Id: I2c02b4e686a65e0748f4a4afd27dc49602d6dd98
This commit is contained in:
@@ -280,6 +280,8 @@
|
|||||||
<string-array name="wifi_ap_security" translatable="false">
|
<string-array name="wifi_ap_security" translatable="false">
|
||||||
<item>Open</item>
|
<item>Open</item>
|
||||||
<!-- Do not translate. -->
|
<!-- Do not translate. -->
|
||||||
|
<item>WPA PSK</item>
|
||||||
|
<!-- Do not translate. -->
|
||||||
<item>WPA2 PSK</item>
|
<item>WPA2 PSK</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
@@ -46,12 +46,13 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
|
|||||||
|
|
||||||
private final DialogInterface.OnClickListener mListener;
|
private final DialogInterface.OnClickListener mListener;
|
||||||
|
|
||||||
private static final int OPEN_INDEX = 0;
|
static final int OPEN_INDEX = 0;
|
||||||
private static final int WPA_INDEX = 1;
|
static final int WPA_INDEX = 1;
|
||||||
|
static final int WPA2_INDEX = 2;
|
||||||
|
|
||||||
private View mView;
|
private View mView;
|
||||||
private TextView mSsid;
|
private TextView mSsid;
|
||||||
private int mSecurityType = AccessPoint.SECURITY_NONE;
|
private int mSecurityTypeIndex = OPEN_INDEX;
|
||||||
private EditText mPassword;
|
private EditText mPassword;
|
||||||
|
|
||||||
WifiConfiguration mWifiConfig;
|
WifiConfiguration mWifiConfig;
|
||||||
@@ -61,8 +62,18 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
|
|||||||
super(context);
|
super(context);
|
||||||
mListener = listener;
|
mListener = listener;
|
||||||
mWifiConfig = wifiConfig;
|
mWifiConfig = wifiConfig;
|
||||||
if (wifiConfig != null)
|
if (wifiConfig != null) {
|
||||||
mSecurityType = AccessPoint.getSecurity(wifiConfig);
|
mSecurityTypeIndex = getSecurityTypeIndex(wifiConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getSecurityTypeIndex(WifiConfiguration wifiConfig) {
|
||||||
|
if (wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) {
|
||||||
|
return WPA_INDEX;
|
||||||
|
} else if (wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA2_PSK)) {
|
||||||
|
return WPA2_INDEX;
|
||||||
|
}
|
||||||
|
return OPEN_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WifiConfiguration getConfig() {
|
public WifiConfiguration getConfig() {
|
||||||
@@ -77,12 +88,12 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
|
|||||||
*/
|
*/
|
||||||
config.SSID = mSsid.getText().toString();
|
config.SSID = mSsid.getText().toString();
|
||||||
|
|
||||||
switch (mSecurityType) {
|
switch (mSecurityTypeIndex) {
|
||||||
case AccessPoint.SECURITY_NONE:
|
case OPEN_INDEX:
|
||||||
config.allowedKeyManagement.set(KeyMgmt.NONE);
|
config.allowedKeyManagement.set(KeyMgmt.NONE);
|
||||||
return config;
|
return config;
|
||||||
|
|
||||||
case AccessPoint.SECURITY_PSK:
|
case WPA_INDEX:
|
||||||
config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
|
config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
|
||||||
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
|
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
|
||||||
if (mPassword.length() != 0) {
|
if (mPassword.length() != 0) {
|
||||||
@@ -90,6 +101,15 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
|
|||||||
config.preSharedKey = password;
|
config.preSharedKey = password;
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
|
|
||||||
|
case WPA2_INDEX:
|
||||||
|
config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK);
|
||||||
|
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
|
||||||
|
if (mPassword.length() != 0) {
|
||||||
|
String password = mPassword.getText().toString();
|
||||||
|
config.preSharedKey = password;
|
||||||
|
}
|
||||||
|
return config;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -116,15 +136,10 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
|
|||||||
|
|
||||||
if (mWifiConfig != null) {
|
if (mWifiConfig != null) {
|
||||||
mSsid.setText(mWifiConfig.SSID);
|
mSsid.setText(mWifiConfig.SSID);
|
||||||
switch (mSecurityType) {
|
mSecurity.setSelection(mSecurityTypeIndex);
|
||||||
case AccessPoint.SECURITY_NONE:
|
if (mSecurityTypeIndex == WPA_INDEX ||
|
||||||
mSecurity.setSelection(OPEN_INDEX);
|
mSecurityTypeIndex == WPA2_INDEX) {
|
||||||
break;
|
mPassword.setText(mWifiConfig.preSharedKey);
|
||||||
case AccessPoint.SECURITY_PSK:
|
|
||||||
String str = mWifiConfig.preSharedKey;
|
|
||||||
mPassword.setText(str);
|
|
||||||
mSecurity.setSelection(WPA_INDEX);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +156,8 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
|
|||||||
|
|
||||||
private void validate() {
|
private void validate() {
|
||||||
if ((mSsid != null && mSsid.length() == 0) ||
|
if ((mSsid != null && mSsid.length() == 0) ||
|
||||||
(mSecurityType == AccessPoint.SECURITY_PSK && mPassword.length() < 8)) {
|
(((mSecurityTypeIndex == WPA_INDEX) || (mSecurityTypeIndex == WPA2_INDEX))&&
|
||||||
|
mPassword.length() < 8)) {
|
||||||
getButton(BUTTON_SUBMIT).setEnabled(false);
|
getButton(BUTTON_SUBMIT).setEnabled(false);
|
||||||
} else {
|
} else {
|
||||||
getButton(BUTTON_SUBMIT).setEnabled(true);
|
getButton(BUTTON_SUBMIT).setEnabled(true);
|
||||||
@@ -167,10 +183,7 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||||
if(position == OPEN_INDEX)
|
mSecurityTypeIndex = position;
|
||||||
mSecurityType = AccessPoint.SECURITY_NONE;
|
|
||||||
else
|
|
||||||
mSecurityType = AccessPoint.SECURITY_PSK;
|
|
||||||
showSecurityFields();
|
showSecurityFields();
|
||||||
validate();
|
validate();
|
||||||
}
|
}
|
||||||
@@ -180,7 +193,7 @@ class WifiApDialog extends AlertDialog implements View.OnClickListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showSecurityFields() {
|
private void showSecurityFields() {
|
||||||
if (mSecurityType == AccessPoint.SECURITY_NONE) {
|
if (mSecurityTypeIndex == OPEN_INDEX) {
|
||||||
mView.findViewById(R.id.fields).setVisibility(View.GONE);
|
mView.findViewById(R.id.fields).setVisibility(View.GONE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -41,9 +41,6 @@ public class WifiApSettings extends SettingsPreferenceFragment
|
|||||||
private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
|
private static final String ENABLE_WIFI_AP = "enable_wifi_ap";
|
||||||
private static final int CONFIG_SUBTEXT = R.string.wifi_tether_configure_subtext;
|
private static final int CONFIG_SUBTEXT = R.string.wifi_tether_configure_subtext;
|
||||||
|
|
||||||
private static final int OPEN_INDEX = 0;
|
|
||||||
private static final int WPA_INDEX = 1;
|
|
||||||
|
|
||||||
private static final int DIALOG_AP_SETTINGS = 1;
|
private static final int DIALOG_AP_SETTINGS = 1;
|
||||||
|
|
||||||
private String[] mSecurityType;
|
private String[] mSecurityType;
|
||||||
@@ -81,12 +78,12 @@ public class WifiApSettings extends SettingsPreferenceFragment
|
|||||||
final String s = activity.getString(
|
final String s = activity.getString(
|
||||||
com.android.internal.R.string.wifi_tether_configure_ssid_default);
|
com.android.internal.R.string.wifi_tether_configure_ssid_default);
|
||||||
mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),
|
mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),
|
||||||
s, mSecurityType[OPEN_INDEX]));
|
s, mSecurityType[WifiApDialog.OPEN_INDEX]));
|
||||||
} else {
|
} else {
|
||||||
|
int index = WifiApDialog.getSecurityTypeIndex(mWifiConfig);
|
||||||
mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),
|
mCreateNetwork.setSummary(String.format(activity.getString(CONFIG_SUBTEXT),
|
||||||
mWifiConfig.SSID,
|
mWifiConfig.SSID,
|
||||||
mWifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
|
mSecurityType[index]));
|
||||||
mSecurityType[WPA_INDEX] : mSecurityType[OPEN_INDEX]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,10 +135,10 @@ public class WifiApSettings extends SettingsPreferenceFragment
|
|||||||
} else {
|
} else {
|
||||||
mWifiManager.setWifiApConfiguration(mWifiConfig);
|
mWifiManager.setWifiApConfiguration(mWifiConfig);
|
||||||
}
|
}
|
||||||
|
int index = WifiApDialog.getSecurityTypeIndex(mWifiConfig);
|
||||||
mCreateNetwork.setSummary(String.format(getActivity().getString(CONFIG_SUBTEXT),
|
mCreateNetwork.setSummary(String.format(getActivity().getString(CONFIG_SUBTEXT),
|
||||||
mWifiConfig.SSID,
|
mWifiConfig.SSID,
|
||||||
mWifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
|
mSecurityType[index]));
|
||||||
mSecurityType[WPA_INDEX] : mSecurityType[OPEN_INDEX]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user