1

如何检查 Android 设备是否已连接到 Internet 连接?目前,我正在使用以下代码:

ConnectivityManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
boolean isConnectedToNetwork = (networkInfo != null && networkInfo.isConnected());

但是,上面代码的问题在于它只检查设备是否连接到网络。它不检查互联网连接是否可用。例如,如果设备连接到没有互联网访问权限的路由器,它仍然会返回 true,isConnectedToNetwork因为从技术上讲,您是通过路由器连接到网络的。只是路由器没有互联网连接。

我看到的一个建议是尝试连接到一个停机几率非常低的网站。这方面的一个例子是 www.google.com。但是,我认为这不是正确的解决方案。首先,如果用户使用 GPRS 并按每 KB 为他的互联网使用收费,那么他将为此承担额外的费用。其次,我认为使用这样的第三方网站是不道德的。这真的是检查互联网连接的唯一方法,还是您可以提出不同的解决方案?未经他们同意就这样连接到谷歌真的可以吗?如何检查设备是否有互联网连接?

4

3 回答 3

2
    public boolean isOnline(Context context) {
    try {
        ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); 
        if (cm.getActiveNetworkInfo().isConnectedOrConnecting()) {
            URL url = new URL("http://www.ripansekhon.blogspot.com");
            HttpURLConnection urlc = (HttpURLConnection) url .openConnection();
            urlc.setRequestProperty("User-Agent", "test");
            urlc.setRequestProperty("Connection", "close"); 
            urlc.setConnectTimeout(1000); // mTimeout is in seconds
            urlc.connect();
            if (urlc.getResponseCode() == 200) {
                return true;
            } else {
                return false;
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return false;
}

检查此功能,检查互联网是否正常工作,表示网站是否打开 希望此代码可以帮助所有想要互联网工作的人除了网络是否连接之外

于 2012-05-16T11:28:10.637 回答
1

利用ConnectivityManager.TYPE_WIFI

ConnectivityManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    boolean isConnectedToNetwork = (networkInfo != null && networkInfo.isConnected());
于 2012-04-11T04:45:37.217 回答
0
public  boolean checkInternetConnection() {

    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getActiveNetworkInfo() != null
            && conMgr.getActiveNetworkInfo().isAvailable()
            && conMgr.getActiveNetworkInfo().isConnected()) {
        Log.d("Internet Connection  Present","");
        isFound=true;
    } else {
        Log.d("Internet Connection Not Present","");
        isFound= false;
    }
    return isFound;
}
于 2012-04-11T12:35:22.090 回答