0

我正在尝试通过 web 服务从服务器中提取和推送一些数据。我应该做的强制性事情是连接检查。我现在所做的是,在它从服务器推送/拉取结果集之前,我在每个活动中编写了一个连接检查代码。我知道这不是我应该编码的最佳方式。取而代之的是,这种连接检查应该在后台运行(在屏幕后面)并在 WIFI / 3G 变低/下降时提醒用户。

最好的方法是什么?

请让我知道你的想法。

谢谢你。

4

4 回答 4

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;
    }
}
于 2011-05-23T07:31:28.473 回答
2

您可以注册一个BroadcastReceiver来监听连接变化。可以在这里找到详细的帖子。

于 2011-05-23T07:32:44.660 回答
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 的某个网站是否可用。这可能很有用,因为设备可能连接到无法访问互联网的 WLAN 路由器。在这种情况下,虽然没有互联网可用,但wifi.isConnected()也会返回。true

于 2011-05-23T08:44:53.003 回答
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;

     }
于 2011-05-23T07:33:51.307 回答