Как проверить подключение к Интернету в сети в Android (используя интернет другого устройства через HOTSPOT)
У меня есть требование, когда я хочу проверить, есть ли какое-либо подключение к Интернету, когда я подключен к сети.
Например, у меня есть устройство A и устройство B.
Устройство A связано с точкой доступа с точкой доступа устройства B. В устройстве A я подключаю его как Wi-Fi и устройство B - одно устройство, подключенное к точке доступа.
Теперь, если я удалю интернет с устройства B (а не модемную точку доступа), то в устройстве A он все еще отображается - подключен к Wi-Fi, но нет подключения к интернету.
Такие классы, как ConnectivityManager, помогают определить, связано ли устройство с сетью, а не о подключении к Интернету.
Я хочу отслеживать эту проблему. Есть ли способ достичь этого?
Ответы
Ответ 1
Это может быть смешное решение, но я думаю, что это может быть реальное решение:
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;
}
Ответ 2
Попробуйте выполнить следующую функцию, чтобы проверить подключение к Интернету:
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" />