2015-08-28 51 views
0

我是嘗試以編程方式連接到另一個網絡。爲了測試,我使用nexus 7android 5.1.1。我在這裏的代碼的一部分,一個改變網絡:Android沒有重新配置到配置的網絡

 final String qu = "\""; 
     final String MC_SSID = qu + SSID + qu; 
     final String MC_PASS = qu + "mypass" + qu; 

     Log.d(TAG,"Conecting to " + MC_SSID + " : " + MC_PASS); 

     WifiConfiguration conf = new WifiConfiguration(); 
     conf.SSID = MC_SSID; 
     conf.preSharedKey = MC_PASS; 

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

     List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); 
     for(WifiConfiguration i : list) { 
      Log.d(TAG,"WifiConf -> " + i.SSID); 
      if(i.SSID != null && i.SSID.equals(MC_SSID)) { 
       Log.d(TAG,"I\'m going to connect to " + i.SSID); 
       wifiManager.disconnect(); 
       wifiManager.enableNetwork(i.networkId, true); 
       wifiManager.reconnect(); 

       break; 
      } 
     } 

通過這裏一切ok,我看到在頂部dissappear的無線網絡連接圖標,但再次連接時,網絡是最後一個,而不是在wifiManager上配置的一個。

爲了另一項測試,我使用了另一家公司的另一款平板電腦,它運行良好。

日誌輸出

08-28 13:00:45.174 25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ Conecting to "My-SSID" : "mypass" 
08-28 13:00:45.269 25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ WifiConf -> "My-SSID" 
08-28 13:00:45.269 25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ I\'m going to connect to My-SSID 

看來,一切都很好。

執行此代碼對外螺紋,我不知道這是否會影響。

我做了一個應用程序來測試我是否做錯了,並且該應用程序工作正常,產生的變化很好。

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    if (adapter.getItem(position) != null) { 
     final String qu = "\""; 
     final String MC_SSID = qu + adapter.getItem(position) + qu; 
     final String MC_PASS = qu + "mypass" + qu; 

     Log.d(TAG,"Conecting to " + MC_SSID); 

     WifiConfiguration conf = new WifiConfiguration(); 
     conf.SSID = MC_SSID; 
     conf.preSharedKey = MC_PASS; 

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

     List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); 
     for(WifiConfiguration i : list) { 
      Log.d(TAG,"WifiConf -> " + i.SSID); 
      if(i.SSID != null && i.SSID.equals(MC_SSID)) { 
       Log.d(TAG,"Voy ha realizar la reconexion"); 
       wifiManager.disconnect(); 
       wifiManager.enableNetwork(i.networkId, true); 
       wifiManager.reconnect(); 

       break; 
      } 
     } 
    } 
} 

誰能告訴我爲什麼會發生:唯一的區別是執行(Execute)的一個ListView內取得的OnClickListener? Nexus 7的一些配置?我該如何解決它?

編輯:如有必要,我可以發佈保留代碼,但它有點廣泛。

回答

0

那麼,經過一些測試和閱讀文檔WifiManager,而不是斷開連接和重新連接wifi,我使用的方法wifiManager.reassociate()

這對我很有用,我認爲它比從WiFi斷開連接好,因爲你試圖連接到另一個WiFi網絡,在enableNetwork(i.networkId, true)上描述,並且當前連接被排除。

使用其他方法,出於某種原因,雖然我禁用了其他網絡,但設備未連接到我想要的網絡。