IoT 장치 용 Android 앱을 프로그래밍하고 있습니다. 장치에 WiFi 사용자 이름과 암호를 부여해야하므로 안드로이드 앱을 사용하고 있습니다. 다음 코드가 있지만 네트워크 날씨에 항상 연결되어 있거나 올바른 암호가 제공되지 않은 것으로 보입니다.프로그래밍 방식으로 Android 테스트 Wi-Fi 연결을 사용합니다.
본인은 휴대 전화가 연결된 동일한 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를 반환합니다. 이 문제를 해결하기위한 아이디어를 제안 할 수 있습니까? – AngelJanniee