检查Android中的Internet连接

时间:2011-05-23 07:28:06

标签: android connectivity

我试图通过webservice将数据推送到服务器或从服务器推出一些数据。我应该做的强制性事情是连接检查。我现在所做的是,在从服务器推送/拉取结果集之前,我已在每个活动中编写了连接检查代码。我知道这不是我应该编码的最佳方式。相反,当WIFI / 3G变低/下降时,此连接检查应该运行某些事情,例如背景,(在屏幕后面)并警告用户。

最好的方法是什么?

请让我知道你的想法。

谢谢。

4 个答案:

答案 0 :(得分:2)

嗨,我这样做可能还有更好的

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

答案 1 :(得分:2)

您可以注册BroadcastReceiver来监听连接更改。可以找到详细的帖子here

答案 2 :(得分:1)

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,但没有互联网可用。

答案 3 :(得分:0)

用于检查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;

     }