Как обрабатывать 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;
}