Add support for WPA for soft Ap

Bug: 2771935
Change-Id: I2c02b4e686a65e0748f4a4afd27dc49602d6dd98
This commit is contained in:
Irfan Sheriff
2011-02-16 22:59:44 -08:00
parent eb3c23d426
commit c1a322854d
3 changed files with 43 additions and 31 deletions

View File

@@ -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>

View File

@@ -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;
} }

View File

@@ -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]));
} }
} }
} }