본문 바로가기
SW 프로그래밍/안드로이드

앱에서 WiFi 연결

by N2info 2020. 9. 23.

다음 WifiConfiguration과 같이 인스턴스 를 만들어야 합니다

String networkSSID = "test";
String networkPass = "pass"; 

WifiConfiguration conf = new WifiConfiguration(); 

conf.SSID = "\"" + networkSSID + "\""; // Please note the quotes. String should contain ssid in quotes

그런 다음 WEP 네트워크의 경우 다음을 수행해야합니다.

conf.wepKeys[0] = "\"" + networkPass + "\""; conf.wepTxKeyIndex = 0; 
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);

WPA 네트워크의 경우 다음과 같은 암호를 추가해야합니다.

conf.preSharedKey = "\""+ networkPass +"\"";

개방형 네트워크의 경우 다음을 수행해야합니다.

conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

그런 다음 Android Wi-Fi 관리자 설정에 추가해야합니다.

WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
wifiManager.addNetwork(conf);

 

마지막으로 활성화해야 할 수 있으므로 Android가 연결됩니다.

List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); 

for( WifiConfiguration i : list ) { 
	if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) { 
    	wifiManager.disconnect(); 
        wifiManager.enableNetwork(i.networkId, true); 
        wifiManager.reconnect(); 
        
        break; 
	}
}

 

UPD : WEP의 경우 암호가 16 진수이면 따옴표로 묶을 필요가 없습니다.

 

stackoverflow.com/questions/8818290/how-do-i-connect-to-a-specific-wi-fi-network-in-android-programmatically