我有一个要求,当我连接到网络时,我想检查是否有任何互联网连接。
例如,我有设备A和设备B。
设备A和设备B连接hotspot。在设备A中,我把它和Wi-Fi连接在一起,在设备B中-一个设备连接到hotspot。
现在,如果我从设备B(而不是系留热点)移除互联网,那么在设备A中,它仍然显示-已连接Wi-Fi,但没有互联网连接。
像ConnectivityManager这样的类有助于确定设备是否连接到网络,而不是互联网连接。
我想跟踪这个问题。有什么方法可以做到这一点吗?
发布于 2014-09-26 17:37:10
这可能是一个荒谬的解决方案,但我认为它也可能是真正的解决方案:
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
try {
URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();
if (urlc.getResponseCode() == HttpURLConnection.HTTP_OK) {
return new Boolean(true);
}
} catch (MalformedURLException mue) {
// TODO Auto-generated catch block
mue.printStackTrace();
} catch (IOException ie) {
// TODO Auto-generated catch block
ie.printStackTrace();
}
}
return false;
}
发布于 2014-09-26 17:17:06
尝试以下功能来检查您的互联网连接:
public static boolean isInternetConnected(Context mContext) {
try {
ConnectivityManager connect = null;
connect = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connect != null) {
NetworkInfo resultMobile = connect
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo resultWifi = connect
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if ((resultMobile != null && resultMobile
.isConnectedOrConnecting())
|| (resultWifi != null && resultWifi
.isConnectedOrConnecting())) {
return true;
} else {
return false;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
将以下权限添加到清单文件,
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
https://stackoverflow.com/questions/26056015
复制相似问题