连接到WiFi为什么.disconnect()比reconnect()?

问题描述:

全部 - 我有一个应用程序,我希望用户能够连接到WiFi网络。我看着这个question,我的应用程序能够断开连接并重新连接(换句话说,我拥有正确的SSID和密码),但他并不完全是我想要做的。如果没有连接,我只想连接,如果已经连接,请不要做任何事情。当我关闭WiFi(通过设置)并且运行我的应用程序时,什么都没有发生。所以,比我想这连接到WiFi为什么.disconnect()比reconnect()?

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    WifiConfiguration wc = new WifiConfiguration();   
    String networkSSID = SSID; 
    String networkPass = PASS;  
    wc.SSID = "\"" + networkSSID + "\""; 
    wc.preSharedKey = "\""+ networkPass +"\""; 
    wc.hiddenSSID = true; 
    List<WifiConfiguration> list = wifi.getConfiguredNetworks(); 
    for(WifiConfiguration i : list) { 
     if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {    

     wifi.enableNetwork(i.networkId, true); //Look here 

     break; 

     }   
    } 

与此

//Above code the same 
    for(WifiConfiguration i : list) { 
      if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {    
      wifi.disconnect(); //See, disconnect.. 
      wifi.enableNetwork(i.networkId, true); 
      wifi.reconnect(); //Than reconnect! 
      break; 

      }   
     } 

这一改变确实没有什么,但(即使在WiFi是打开的)。所以我的问题是我怎么才能打开WiFi上,如果不是已经和什么也不做,如果已经(我知道我必须使用if语句,所以我只是在寻找WiFi特定的代码)?感谢您的时间!

你是否只是问如何打开在Android编程的WiFi?

How to programmatically turn off WiFi on Android device?

总结:

wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 

boolean wifiEnabled = wifiManager.isWifiEnabled(); 
if(!wifiEnabled){ 
    wifiManager.setWifiEnabled(true); 
} 
+0

感谢您的快速反应。让我试试你的答案... – ninge 2012-07-30 01:14:15

+0

工作得很漂亮。感谢您的时间和精力! – ninge 2012-07-30 01:17:20