通常,在构建需要API调用等的android应用程序时,在进行这样的调用之前,我会检查NetworkAvailability:
public boolean networkIsAvailable() {
boolean result = false;
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
if (activeNetworkInfo != null) {
if (activeNetworkInfo.isConnected()) {
result = true;
}
}
return result;
}很简单..。但是,当用户使用的设备没有移动连接,连接到Wifi网络,但Wifi网络没有互联网接入时,会发生什么情况。
除了捕捉java.net.UnknownHostException以测试实际的互联网访问之外,还有其他选项吗?
发布于 2014-07-18 19:07:55
你可以用这个:
public static boolean hasActiveInternetConnection(Context context) {
if (isNetworkAvailable(context)) {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
Log.e(LOG_TAG, "Error checking internet connection", e);
}
} else {
Log.d(LOG_TAG, "No network available!");
}
return false;
}请记住:“正如Tony在下面的评论中所指出的,确保您没有在主线程上运行这段代码,否则您将得到一个NetworkOnMainThread异常(在Android3.0或更高版本中)。使用AsyncTask或Runnable代替。”
https://stackoverflow.com/questions/24831989
复制相似问题