首页 文章

如果设备连接到路由器,如何检查互联网连接可用性?

提问于
浏览
1

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

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

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

我见过的一个建议是尝试连接到一个很有可能被关闭的网站 . 这方面的一个例子是www.google.com . 但是,我认为这不是适当的解决方案 . 首先,如果用户使用GPRS并且因其互联网使用而按每KB收费,则他将承担额外费用 . 其次,我不认为使用像这样的第三方网站是合乎道德的 . 这真的是检查互联网连接的唯一方法,还是可以建议不同的解决方案?没有他们的同意,是否可以像这样连接谷歌?如何检查设备是否有互联网连接?

3 回答

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

    检查此功能,检查互联网是否正常工作,意味着网站是否开放希望此代码能帮助所有想要上网的人工作与否网络连接与否

  • 0

    使用 ConnectivityManager.TYPE_WIFI

    ConnectivityManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        boolean isConnectedToNetwork = (networkInfo != null && networkInfo.isConnected());
    
  • 2
    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;
    }
    

相关问题