繁体   English   中英

检查Android中的互联网连接

[英]Check the Internet Connectivity in Android

我正在尝试通过Web服务向服务器中以及从服务器中推入和推入一些数据。 我必须要做的强制性事情是连接检查。 我现在所做的是,在每个活动从服务器中推送/提取结果集之前,我已经在每个活动中编写了连接检查代码。 我知道这不是我应该编码的最佳方法。 相反,当WIFI / 3G变低/掉线时,此连接检查应在屏幕后面运行诸如background的操作,并警告用户。

最好的方法是什么?

请让我知道您的想法。

谢谢。

嗨,我这样做的方式也许更好

private boolean checkInternetConnection() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    // test for connection
    if (cm.getActiveNetworkInfo() != null
            && cm.getActiveNetworkInfo().isAvailable()
            && cm.getActiveNetworkInfo().isConnected()) {
        return true;
    } else {
        //no conection
        return false;
    }
}

您可以注册BroadcastReceiver来侦听连接更改。 可以在这里找到详细的帖子。

public static boolean isInternetAvailable(Context context){
        ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if(wifi.isConnected() || mobile.isConnected()){
            // Check for web site       
            try{
                // Create a URL for the desired page
                URL url = new URL("http://www.google.com");
                // Read all the text returned by the server
                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                in.close();
                return true;
            } catch (Exception e) {
                return false;
            }
        }

        return false;
    }   

该方法还检查在这种情况下www.google.com是否可用的某个网站。 这可能很有用,因为设备可能已连接到无法访问Internet的WLAN路由器。 在这种情况下,即使没有可用的互联网, wifi.isConnected()也将返回true

用于检查android中的互联网连接。

public static boolean isOnline(Activity act) 
     {
         ConnectivityManager cm = (ConnectivityManager)act.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) 
        {
            return true;
        }
        return false;

     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM