2011-07-07 53 views
0

今天我在Android设备上测试我的应用程序时发现了一件奇怪的事情。在我的设备中,我已启用WIFI连接,但由于某些内部问题,因特网连接不可用,并且我的应用程序未执行,重新启动设备后工作正常。那么如何处理这种情况。检查android中的Internet连接问题?

[在我的应用我有验证WIFI和移动网络]

回答

1

试试这个,

protected boolean isOnline() { 
ConnectivityManager cm = (ConnectivityManager)  getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
if (netInfo != null && netInfo.isConnected()) { 
    return true; 
} else { 
    return false; 
} 
} 

OR

public boolean isOnline() { 
ConnectivityManager cm = (ConnectivityManager)  getSystemService(Context.CONNECTIVITY_SERVICE); 
return cm.getActiveNetworkInfo().isConnectedOrConnecting(); 

} 
0

我有工作在网络上一个奇怪的问题。我会通过wifi连接手机到我们的网络,它会连接到网络盛大,状态将“连接到网络的名称”。但约10分钟后,我的手机连接到Wifi。当我检查电话状态时,它显示“使用[网络名称]进行身份验证 这个问题导致了一段时间的调试,因为即使它说它是”验证“,我仍然可以访问我的手机上的Gmail/Facebook和网站。但是,当我想我的连接方法类似于天蝎座它将返回未连接到互联网 这里是我的:

/** 
* Method to see if device has any access to the Internet. 
* @return boolean true if connected, otherwise false. 
*/ 
public boolean isConnectedToInternet() 
{ 
    try{ 
     ConnectivityManager cm = (ConnectivityManager) getSystemService 
                (Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

     if (netInfo != null && netInfo.isConnected()) 
     { 
      //Network is available but check if we can get access from the network. 
      URL url = new URL("http://www.Google.com/"); 
      HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
      urlc.setRequestProperty("Connection", "close"); 
      urlc.setConnectTimeout(2000); // Timeout 2 seconds. 
      urlc.connect(); 

      if (urlc.getResponseCode() == 200) //Successful response. 
      { 
       return true; 
      } 
      else 
      { 
       Toast.makeText(this, "No connection to internet.", Toast.LENGTH_LONG).show(); 
       Log.d("NO INTERNET", "NO INTERNET"); 
       return false; 
      } 
     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    Toast.makeText(this, "No connection to internet.", Toast.LENGTH_LONG).show(); 
    return false; 
} 

然而,当手机甾体抗炎药其验证这条线在这里将返回null

NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

所以就像我说的时候,我仍然可以访问网络上的手机和应用程序由于facebook/gmail仍然有效,但我的应用程序或我的一些使用上述类似方法的同事却没有。 当我明白为什么会出现这种情况时,我显然可以看出为什么。刚刚让我好奇,facebook/gmail等应用程序如何测试与互联网的连接。 所以我想我应该采取这样做的一个简单的方法:

URL url = new URL("http://www.Google.com/"); 
      HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
      urlc.setRequestProperty("Connection", "close"); 
      urlc.setConnectTimeout(2000); // Timeout 2 seconds. 
      urlc.connect(); 

      if (urlc.getResponseCode() == 200) //Successful response. 
      { 
       return true; 
      } 
      else 
      { 
       Toast.makeText(this, "No connection to internet.", Toast.LENGTH_LONG).show(); 
       Log.d("NO INTERNET", "NO INTERNET"); 
       return false; 
      } 

反正张贴的问题是相当含糊所以很难说什么你说关闭内部问题以及如何解决它。只是看起来很像一个f。。