更新:基本上我需要确认我的网络是私有网络还是与外界连接,即连接到互联网。例如,我在 WiFi 网络上,但未连接路由器互联网线路。因此,虽然网络已连接,但互联网不可用。
需要在我的 Android 应用程序中显示网络详细信息,
- (a) n/w 是否可用
- (b) 互联网设施是否可用
目前,我认为 www.google.com 将始终处于上升和低于代码部分的状态。但是这个解决方案是缓慢的,并且基于 www.google.com 将始终处于运行状态的假设。
有没有更好的选择来确认网络上是否有互联网设施?
public static boolean isConnected(Context context){
NetworkInfo info = Connectivity.getNetworkInfo(context);
return (info != null && info.isConnected());
}
public boolean checkInternetConnectivity() {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL(
"http://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(3000);
urlc.setReadTimeout(4000);
urlc.connect();
isInterNetAvailable = true;
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
isInterNetAvailable = false;
return (false);
}
}
public String getNWConnectivityText() {
if (isConnected(getSherlockActivity()) == true) {
if (true == checkInternetConnectivity()) {
return ""N/W is connected and Internet is working!";
} else {
return "N/W is connected but Internet is NOT working!";
}
} else {
return "N/W is not connected!";
}
}