2017-04-08 2 views
0

WifiManager、WifiConfiguration APIについて学習しています。
私が達成しようとしているのは、特定のネットワークに接続したいということです。
それは特定ネットワークに接続する私の主な仕事ですが、私のデバイスがすでに他のネットワークに接続されている場合は、ネットワークから特定のネットワークに切り替える必要があります。 57:49.690 3326から3326/com.example.illuminati.services D /のRohit:追加のWiFi設定ここ
はスニペットここandroidで別のWi-Fiネットワークに切り替える方法

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であります 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 D/Rohit:ネットワーク接続 04-08 19:57:50.087 3326-3326 /com.example.illuminati.services D/Rohit:有効 04-08 19:57:50.087 3326-3326/com.example.illuminati.services D/Rohit:再接続中.... 04-08 19:57: 50.089 3326から3326/com.example.illuminati.services D /のRohit:デバイスは、それが再接続された他のネットワークに接続されている場合、それは特定のネットワーク に接続しかし、任意のネットワークに接続されていない場合

接続再び同じネットワークに接続します。
ここには何が欠けていますか?
私はstackoverflowで同様の質問が見つかりましたが、それは助けにはなりません。
何か助けていただければ幸いです。

答えて

0

Okこれは私のために働いた。
別のメソッドを作成して、現在アクティブなネットワークを無効にしました。
しかし、私はwifiManager.enableNetwork(networkId、true)でそのことを理解していません。 2番目のパラメータは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; 
} 
です
関連する問題