系统设置中WIFI热点的加密方式,添加新的WIFI和连接WIFI的时候,需要在程序中配置相应的参数,可以打开自己的手机对着看
包:android.net.wifi.WifiConfiguration 类 WifiConfiguration
设置网络的SSID
config.SSID
默认都设置为true
config.hiddenSSID
1:没加密
添加网络时候只需要输入SSID即可,不需要密码
config.allowedKeyManagement.set(KeyMgmt.NONE);
2:WEP加密
添加网络时需要输入SSID和密码。
config.allowedKeyManagement.set(KeyMgmt.NONE);
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED);
设置密码
config.wepKeys[0]
WEP密钥。一个ASCII字符串包含在双引号中(例如,"abcdef"或一个十六进制数字的字符串(例如,0102030405).
当这些键之一是阅读的价值,实际的关键不是返回,只是一个“*”键有一个值,否则或空字符串
设置该参数的参考代码如下:
String password = etPassword.getText().toString();
// WEP-40, WEP-104, and 256-bit WEP (WEP-232?)
if ((length == 10 || length == 26 || length == 58)
&& password.matches("[0-9A-Fa-f]*")) {
config.wepKeys[0] = password;
} else {
config.wepKeys[0] = '"' + password + '"';//这里是一对引号
}
3:WPA/WPA2加密
添加网络时需要输入SSID和密码。
config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
设置密码
config.preSharedKey
这个关键是读的值时,实际的关键不是返回,只是一个“*”键有一个值,否则或空字符串。
设置该参数的参考代码如下:
String password = etPassword.getText().toString();
if (password.matches("[0-9A-Fa-f]{64}")) {
config.preSharedKey = password;
} else {
config.preSharedKey = '"' + password + '"';//这里是一对引号
}
4:802.1x EAP加密
config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
设置EAP方法
config.enterpriseConfig.setEapMethod();
EAP方法又分为TLS TTLS PWD PEAP等四种,选择不同的类型后面所需要的参数也可能不同
设置阶段2身份验证
config.enterpriseConfig.setPhase2Method();
阶段2身份验证又分为 无 PAP MSCHAP MSCHAPV2 GTC等五种
设置用户证书
config.enterpriseConfig.setClientCertificateAlias();
设置CA证书
config.enterpriseConfig.setCaCertificateAlias();
获取CA证书(字符串类型数组)
KeyStore.getInstance().saw(Credentials.CA_CERTIFICATE, android.os.Process.WIFI_UID);
获取用户证书(字符串类型数组)
KeyStore.getInstance().saw(Credentials.USER_PRIVATE_KEY, android.os.Process.WIFI_UID);
设置身份
config.enterpriseConfig.setIdentity()
设置匿名身份
config.enterpriseConfig.setAnonymousIdentity();
设置密码
config.enterpriseConfig.setPassword();
设置完相关参数以后保存下网络即可
如果需要连接WIFI热点,连接之前也是要判断热点的加密方式的,然后加载相应的网络参数