Подтвердить что ты не робот

Как проверить подключение к Интернету в сети в Android (используя интернет другого устройства через HOTSPOT)

У меня есть требование, когда я хочу проверить, есть ли какое-либо подключение к Интернету, когда я подключен к сети.

Например, у меня есть устройство A и устройство B.

Устройство A связано с точкой доступа с точкой доступа устройства B. В устройстве A я подключаю его как Wi-Fi и устройство B - одно устройство, подключенное к точке доступа.

Теперь, если я удалю интернет с устройства B (а не модемную точку доступа), то в устройстве A он все еще отображается - подключен к Wi-Fi, но нет подключения к интернету.

Такие классы, как ConnectivityManager, помогают определить, связано ли устройство с сетью, а не о подключении к Интернету.

Я хочу отслеживать эту проблему. Есть ли способ достичь этого?

4b9b3361

Ответ 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" />