我正在尝试通过 web 服务从服务器中提取和推送一些数据。我应该做的强制性事情是连接检查。我现在所做的是,在它从服务器推送/拉取结果集之前,我在每个活动中编写了一个连接检查代码。我知道这不是我应该编码的最佳方式。取而代之的是,这种连接检查应该在后台运行(在屏幕后面)并在 WIFI / 3G 变低/下降时提醒用户。
最好的方法是什么?
请让我知道你的想法。
谢谢你。
我正在尝试通过 web 服务从服务器中提取和推送一些数据。我应该做的强制性事情是连接检查。我现在所做的是,在它从服务器推送/拉取结果集之前,我在每个活动中编写了一个连接检查代码。我知道这不是我应该编码的最佳方式。取而代之的是,这种连接检查应该在后台运行(在屏幕后面)并在 WIFI / 3G 变低/下降时提醒用户。
最好的方法是什么?
请让我知道你的想法。
谢谢你。
嗨,我这样做可能会更好
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 的某个网站是否可用。这可能很有用,因为设备可能连接到无法访问互联网的 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;
}