Как обрабатывать com.android.volley.NoConnectionError: java.net.UnknownHostException

Я использую Volley для веб-звонков в своем приложении, и все работает нормально и гладко, за исключением одного состояния, в котором мое устройство каким-то образом не получает сетевое соединение, но проверка соединения через код возвращает значение true, используя приведенный ниже код.

public static boolean isNetworkAvailable() {

    ConnectivityManager connectivityManager = SessionApplication.getConnectivityManager();
    if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
            connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
        //we are connected to a network
        return true;
    }
    else
        return false;
}

Вместо того, чтобы возвращать ложное состояние сети с помощью приведенного выше кода Мои веб-вызовы залпов возвращают мне это исключение "обрабатывать com.android.volley.NoConnectionError: java.net.UnknownHostException".

Я проверил свое интернет-соединение, открыв браузер на моем устройстве, и обнаружил, что оно также не работает. Так что я в порядке с поведением приложения, но все же мне нужно справиться с таким условием, потому что это не удобно для пользователя, должен быть выведен диалог "Проверьте подключение к Интернету!".

Это должно быть распространенной проблемой в Android. Может ли кто-нибудь помочь мне дать мне лучший подход к таким случаям? Заранее спасибо.

Состояние сети:

2 ответа

Это исключение указывает на проблему с подключением. На самом деле вы можете показать диалог о подключении. Переопределение onErrorResponse(VolleyError error) вы можете сделать это -

public void onErrorResponse(VolleyError error) {
                        Log.d(TAG, error.toString());
                        if (error instanceof NoConnectionError)
                        new AlertDialog.Builder(this).setMessage(
                                "Unable to connect to the server! Please ensure your internet is working!").show();
                    }

Попробуйте этот метод может помочь

public boolean isConnectedToInternet(){
        connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivityManager != null){
              NetworkInfo[] info = connectivityManager.getAllNetworkInfo();
              if (info != null){
                  for (int i = 0; i < info.length; i++){
                      if (info[i].getState() == NetworkInfo.State.CONNECTED){
                          return true;
                      }
                  } 
              }
          }
          return false;
    }
Другие вопросы по тегам