如何处理com.android.volley.NoConnectionError:java.net.UnknownHostException

时间:2016-10-20 04:25:51

标签: java android https unknown-host android-connectivitymanager

我在我的应用程序中使用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;
}

而不是使用上面的代码返回网络状态false我的排球网络调用返回我这个异常"处理com.android.volley.NoConnectionError:java.net.UnknownHostException"。

我通过在我的设备中打开浏览器检查了我的互联网连接,发现它也无法正常工作。所以我对应用程序行为没有问题,但我仍然需要处理这样的情况,因为这不是用户友好的用户应该被提示一个对话框"检查你的Internet连接!"。

这应该是Android中的常见问题可以帮助我给我最好的处理此类案例的方法。提前谢谢。

网络状态为:enter image description here

2 个答案:

答案 0 :(得分:1)

尝试此方法可能有帮助

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;
    }

答案 1 :(得分:1)

此异常表示连接问题。实际上,您可以显示一些有关连接的对话框。覆盖你可以这样做的if (!this.connManagerShared){ // ...some code if (this.evictExpiredConnections || this.evictIdleConnections) { final IdleConnectionEvictor connectionEvictor = new IdleConnectionEvictor((HttpClientConnectionManager) connManagerCopy, this.maxIdleTime > 0L ? this.maxIdleTime : 10L, this.maxIdleTimeUnit != null ? this.maxIdleTimeUnit : TimeUnit.SECONDS); closeablesCopy1.add(new Closeable() { public void close() throws IOException { connectionEvictor.shutdown(); } }); connectionEvictor.start(); } // ...some code } -

onErrorResponse(VolleyError error)