2017-01-20 10 views
0

시작시 현재 Wi-Fi 네트워크를 가져 와서 다른 네트워크에 연결하는 Android 앱을 만들었습니다. 적어도 그게은 어떻게해야되는 것입니다 :Android wifimanager 사용 네트워크가 잘못된 네트워크를 사용하는 것 같습니다

wifiInfo = wifiManager.getConnectionInfo(); 
OldNetworkID = wifiInfo.getNetworkId(); //save current network 
WDTNetworkID = wifiManager.addNetwork(wificonfiguration); //add new network 
wifiManager.disconnect(); 
wifiManager.enableNetwork(WDTNetworkID, true); //enable new network and disable all others 
wifiManager.reconnect(); 

내가 wificonfiguration 오른쪽 SSID (새로운 네트워크의 SSID)를 포함 볼 수 디버깅 할 때.

addNetwork() 뒤에는 wifiManager.getConfiguredNetworks()에 오른쪽 네트워크 SSID와 WDTNetworkID과 동일한 네트워크 ID가 포함되어 있습니다. 이 시점에서 네트워크가 활성화됩니다.

WDTNetworkID 대신 enableNetwork()을 사용하고 나머지를 사용하지 않도록 설정하면 OldNetworkID이 사용 설정되고 나머지는 사용할 수 없음을 알 수 있습니다.

내가 잘못 했나요? 디버깅하는 동안

This is what it looks like

나는 시계 부부의 사진을 추가했습니다. 이전 네트워크가 사용 가능하고 나머지는 사용 불가능하다는 것을 알 수 있습니다.

답변

0

여기에서 문제는 앱이 실행중인 기기가 android 5.1.1입니다. 이 enableNetwork()의 문서에 언급 된 바와 같이 :

참고 : 응용 프로그램의 대상 SDK 버전이 LOLLIPOP 이상 인 경우, 네트워크 통신이 Wi-Fi를 사용할 수 없습니다도 무선 인터넷이 연결되어있는 경우; 트래픽은 대신 셀룰러 데이터, 블루투스 테 더링 또는 이더넷과 같은 다른 네트워크를 통해 전송 될 수 있습니다. 예를 들어 인터넷 액세스를 제공하는 다른 네트워크 (예 : 셀룰러 데이터)를 사용할 수있는 경우 트래픽은 인터넷 액세스를 제공하지 않는 Wi-Fi 네트워크 (예 : 무선 프린터)를 사용하지 않습니다. 네트워크 트래픽에서 Wi-Fi를 사용해야하는 애플리케이션의 경우 bindSocket(java.net.Socket), openConnection(java.net.URL) 또는 bindProcessToNetwork(Network)과 같은 API를 사용해야합니다.