【发布时间】:2017-06-25 08:00:26
【问题描述】:
我正在为物联网设备编写 Android 应用程序。我必须为设备提供 WiFi 用户名和密码,所以我使用 Android 应用程序来执行此操作。我有以下代码,但似乎总是连接到网络天气或没有给出正确的密码。
我正在与我的手机连接的同一个 AP 上对此进行测试。
想要的动作是
从当前 AP 断开 -> 尝试使用给定的凭据连接 -> 重新连接到原始网络。
我需要采取哪些步骤才能正确验证 wifi 网络和密码?
代码:
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + ssid + "\"";
for(ScanResult sr: wifiList){
if(sr.SSID.equals(ssid)){
if(sr.capabilities.contains("WEP")){
if(isNumeric(pass)){
conf.wepKeys[0] = pass ;
}else{
conf.wepKeys[0] = "\"" + pass + "\"";
}
conf.wepTxKeyIndex = 0;
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
}else if(sr.capabilities.contains("PSK")){
conf.preSharedKey = "\""+ pass +"\"";
}else if(sr.capabilities.contains("EAP")){
wifiName.setError("EAP networks not supported");
//todo support EAP
}else{
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
}
WifiManager wifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.equals(conf)) {
wifiManager.disconnect();
if(!wifiManager.enableNetwork(i.networkId, true)){
wifiPassword.setError("Incorrect Password");
wifiManager.reconnect();
return;
}else{
wifiManager.reconnect();
addUser(deviceSN, ssid, pass);
}
}
}
break;
}
}
【问题讨论】:
-
你解决了吗?我也面临这个问题。如果我添加错误的密码也返回 true。那么你能提出解决这个问题的想法吗
标签: android wifi android-wifi iot wifimanager