如何检查互联网连接的可用性,如果设备连接到路由器?(How to check for interne

2019-10-16 14:04发布

你如何检查是否在Android设备连接到互联网连接? 目前,我使用下面的代码:

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

然而,利用上述代码中的问题是,如果该装置被连接到网络,它仅仅检查。 它不检查,如果互联网连接可用。 例如,如果设备连接,没有网络连接到路由器,它将仍然返回true isConnectedToNetwork因为从技术上说,您连接到通过路由器的网络。 这仅仅是路由器没有互联网连接。

我见过一个建议是尝试连接到一个网站上,有一个非常低的是下跌的机会。 这样的一个例子是www.google.com。 不过,我觉得这是不是这种情况的妥善解决。 首先,如果用户使用的是GPRS和每KB收取他的互联网的使用,那么他将承担这额外的费用。 其次,我不认为这是不道德的使用第三方网站这样。 这真的是检查互联网连接的唯一方式,也可以提出不同的解决方案? 难道真的好吗连接到谷歌一样,没有他们的同意? 如何检查设备是否有互联网连接?

Answer 1:

    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;
}

检查这项功能,检查互联网是否工作与否,是指网站打开或不希望这个代码可以帮助所有谁愿意互联网是工作或没有,除了网络连接或不是人



Answer 2:

使用ConnectivityManager.TYPE_WIFI

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


Answer 3:

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;
}


文章来源: How to check for internet connection availability if device is connected to a router?