如何检查Internet访问在Android中可用

时间:2015-09-06 17:53:42

标签: java android networking

我想创建一个与Internet和服务器以及Web服务一起工作的应用程序,我创建了一个检查网络可用的方法,我使用下面的方法:

private boolean isNetworkConnect() {
        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netinfo = cm.getActiveNetworkInfo();
        if (netinfo != null && netinfo.isConnected()) {
            netType = netinfo.getTypeName();
            return true;
        } else {
            return false;
        }
    }

此方法只是指定Android中的移动网络的WiFi是启用或禁用,但这不足以上网,因为如果我禁用我的笔记本电脑WiFi,但我的模拟器中的Android应用程序说因为WiFi或移动互联网网络是启用,但如果打开浏览器并搜索任何网站都不是Access。!

我如何检查互联网访问,我在浏览器上搜索,从服务器和其他人读取。什么是最佳解决方案?

3 个答案:

答案 0 :(得分:1)

您的代码看起来不错。我已在自己的应用程序中使用此代码。

出现此问题的原因是您使用模拟器测试应用程序。

如果您在真实设备isConnected()方法上测试您的应用是否正常工作。

如果您想在模拟器上获得false方法的isNetworkConnect(),请转到

Settings > Wireless & network > Mobile network And uncheck "Data enabled"

答案 1 :(得分:0)

您的方法通常用于isOnline方法。它不能通过发送数据包来工作,从而验证连接性。它基于国家,即您是否连接到WiFi或移动网络。现在,就像你的情况一样,可能没有任何实际的连接。

要专门回答您的问题,这是您可以做的最好的事情。但是,它无法确保真正的连接。

答案 2 :(得分:0)

试试这个(根据需要编辑)

public void testURL() throws Exception {
String strUrl = "http://stackoverflow.com/about";

try {
    URL url = new URL(strUrl);
    HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
    urlConn.connect();

    assertEquals(HttpURLConnection.HTTP_OK, urlConn.getResponseCode());
} catch (IOException e) {
    System.err.println("Error creating HTTP connection");
    e.printStackTrace();
    throw e;
}

}