2

我在我的应用程序中使用 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 我的 volley web 调用返回了这个异常“handle com.android.volley.NoConnectionError: java.net.UnknownHostException”。

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

这应该是 Android 中的一个常见问题,任何人都可以帮助我给我最好的方法来处理这种情况。提前致谢。

网络状态为:在此处输入图像描述

4

2 回答 2

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();
                    }
于 2016-10-20T04:49:06.893 回答
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;
    }
于 2016-10-20T04:29:31.457 回答