Как определить, что WIFI подключен, но нет интернета (ограничение данных превышено / нет сигнала)

Я хочу проверить, подключен ли '' Wi-Fi '', но как определить, доступен ли интернет? Потому что в моем "MainActivity.java" я проверяю интернет-соединение, а также доступность интернета, следуя коду.

public static boolean isConnectedToInternet(Context context) {

   ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    if (cm.getActiveNetworkInfo() != null
            && cm.getActiveNetworkInfo().isAvailable()
            && cm.getActiveNetworkInfo().isConnected()) {
        Log.d("INTERNET_CONNECTION", "Internet is working");

        return true;
    } else {
        Log.d("INTERNET_CONNECTION", "Internet is Not Available");
        return false;
    }

}

Если Интернет доступен (данные и сигнал в порядке), просмотрите "Индикатор выполнения" и загрузите содержимое, а процесс загрузки завершится, а "Индикатор выполнения" будет невидим. Если Интернет недоступен (нет данных или нет сигнала), невидимый "индикатор выполнения" и отображать ошибку.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        if (isConnectedToInternet(context)== true)
        {
            progressLayout.setVisibility(View.VISIBLE);

            // load the content
        }
        else
        {
            progressLayout.setVisibility(View.GONE);

            Toast.makeText(this, "No Internet", Toast.LENGTH_LONG).show;
        }
}

Если интернет доступен, код работает нормально, но индикатор "прогресс" всегда отображается, когда интернет недоступен. (нет данных или нет сигнала)

1 ответ

 public static boolean isNetworkAvailable(Context activity) {
    ConnectivityManager connectivity = (ConnectivityManager) activity
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (NetworkInfo anInfo : info) {
                if (anInfo.getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}
Другие вопросы по тегам