2017-04-08 21 views
0

WifiManager, WifiConfiguration API에 대해 배우고 있습니다.
내가 달성하고자하는 것은 특정 네트워크에 연결하려고한다는 것입니다.
이것이 내 주요 작업 인 특정 네트워크에 연결되어 있지만 내 장치가 이미 다른 네트워크에 연결되어 있으면 네트워크에서 특정 네트워크로 전환하고 싶습니다. 57 : 3326-3326 49.690/com.example.illuminati.services D/Rohit : 추가 무선 랜의 구성은 다음
android에서 다른 Wi-Fi 네트워크로 전환하는 방법

04-08 19 디버그 출력 니핏 여기

int networkId ; 
    WifiConfiguration wc = new WifiConfiguration(); 
    wc.SSID = "ABCDEFG"; 
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
    wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE); 


    Log.d("Rohit", "Adding wifi config"); 

    networkId = wifiManager.addNetwork(wc); 

    Log.d("Rohit", "Config added\ndisconnecting\nid = "+networkId); 

    wifiManager.disconnect(); 

    Log.d("Rohit", "Disconnected\nNetwork enabling"); 

    wifiManager.enableNetwork(networkId, true); 

    Log.d("Rohit", "enabled\n reconnecting...."); 

    wifiManager.reconnect(); 

    Log.d("Rohit","connected"); 

이다 04-08 19 : 57 : 49.964 3326-3326/com.example.illuminati.services D/Rohit : 구성이 추가되었습니다. 04-08 19 : 57 : 49.964 3326-3326/com.example.illuminati.services D/Rohit : 연결 해제 04-08 19 : 57 : 49.964 3326-3326/com.example.illuminati.services D/Rohit : id = 64 04-08 19 : 57 : 49.964 3326-3326/co m.example.illuminati.services D/Rohit : Disconnected 04-08 19 : 57 : 49.964 3326-3326/com.example.illuminati.services D/Rohit : 네트워크 활성화 04-08 19 : 57 : 50.087 3326-3326 /com.example.illuminati.services D/Rohit : enabled 04-08 19 : 57 : 50.087 3326-3326/com.example.illuminati.services D/Rohit : 재접속 중 .... 04-08 19:57 : 장치가 그것이 특정 NETWORK 에 접속 네트워크에 연결되어 있지 않은 경우

접속하지만, 다른 네트워크에 연결되어있는 경우에는 재접속 : 50.089 3326-3326 /은 D/Rohit을 com.example.illuminati.services 같은 네트워크에 다시 연결하십시오.
여기에 내가 누락 된 부분이 있습니까?
나는 비슷한 질문을 stackoverflow 찾았지만 도움이되지 않습니다.
도움이 될 것입니다 :)

답변

0

좋아요. 30-40 분의 테스트 후 나에게 도움이되었습니다.
별도의 메서드를 생성하여 현재 활성 네트워크를 비활성화합니다.
그러나 wifiManager.enableNetwork (networkId, true)에서이 점을 이해하지 못합니다. 두 번째 매개 변수는 disableOthers입니다.
그래서 wifiManager.enableNetwork (networkId, true)를 사용하고 있다면; , 내 별도의 메서드에서 수행되는 트릭을해야합니다.
생각하세요? 여기

는 업데이트 된 코드

int networkId ; 
    wifiConfig = getWifiConfig(); 
    wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE); 

    // if(wifiManager.) 

    WifiInfo info = wifiManager.getConnectionInfo(); 
    Log.d("Rohit", "current ssid "+info.getSSID()); 

    boolean disable =disableCurrent(info.getSSID()); 
    // Log.d("Rohit","disabled ?"+disable); 


    Log.d("Rohit", "Adding wifi config"); 
    networkId = wifiManager.addNetwork(wifiConfig); 
    //wifiManager.enableNetwork(networkId, true); 

    wifiManager.disconnect(); 
    Log.d("Rohit", "Config added\ndisconnecting\nid = " + networkId); 
    wifiManager.enableNetwork(networkId, true); 


    Log.d("Rohit", "Disconnected\nNetwork enabling"); 


    Log.d("Rohit", "enabled\n reconnecting...."); 
    wifiManager.reconnect(); 


    Log.d("Rohit", "connected"); 

입니다 그리고 여기에 별도의 방법

public boolean disableCurrent(String ssid) 
{ 
    List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks(); 

    for(WifiConfiguration conf : configuredNetworks) 
    { 
     Log.d("Rohit","List "+conf.SSID); 
     if(conf.SSID.equals(ssid)) { 
      Log.d("Rohit","Inside"); 
      wifiManager.disableNetwork(conf.networkId); 
      return true; 
     } 
    } 
    return false; 
} 
입니다