2011-08-24 160 views
1

我正在构建一个Android应用程序,并使用下面的代码来检测是否存在网络连接。它运行良好并可检测移动和WIFI网络。如何检测WIFI何时连接到互联网?

我的问题是如何检测实际的互联网连接。下面的代码连接到WIFI时返回true,但WIFI可能不一定连接到Internet。

代码

protected boolean checkInternetConnection() {  
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    // test for connection  
    if (cm.getActiveNetworkInfo() != null    
      && cm.getActiveNetworkInfo().isAvailable()    
      && cm.getActiveNetworkInfo().isConnected()) { 

     return true; 

     } 
    else {    
     return false; 

     } 

} //end checkInterneConnection method 

感谢您的时间。

梅尔

回答

2

这段代码将检查您的设备是否上网conecction,如果信号差,它会显示一个烤面包等最好不要,

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo Info = conMan.getActiveNetworkInfo(); 

     if(Info == null){ 
      Toast.makeText(RegisterActivity.this,"Network Connection Failed! ", Toast.LENGTH_SHORT).show(); 
     } 
1

你应该试试这个:

public boolean isConnectingToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager) 
      m_context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == 
             NetworkInfo.State.CONNECTED) 
        { 
         return true; 
        } 
     } 
     return false; 
} 

,并检查只有WiFi是简单的:

private boolean isWifiConnected() { 
    int WIFI_STATE = wifi.getWifiState(); 
    if(WIFI_STATE == WifiManager.WIFI_STATE_ENABLED) 
     return true; 

    return false; 
} 
+0

只要检查WiFi是否连接,它会更好使用WifiManager.WIFI_STATE_ENABLED,特别是如果在检查后您将尝试使用它的东西。 – MikeF