网络存在但没有Internet连接

时间:2013-11-08 04:47:20

标签: android

目前我在App上工作,应该可以离线和在线工作。但在某些情况下网络可用但没有互联网连接。或者我如何检查连接速度。如果连接速度非常低,它应该在离线模式下工作。 以下是我如何检查网络可用性的代码。

public static boolean isNetworkAvailable(Context ctx) {
    ConnectivityManager connectivityManager = (ConnectivityManager) ctx
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager
            .getActiveNetworkInfo();

    if (activeNetworkInfo != null) {
        if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
            Log.v("Connection Type", "WI FI");
        } else if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
            Log.v("Connection Type", "Mobile");
        }
    }

    return activeNetworkInfo != null
            && activeNetworkInfo.isConnectedOrConnecting();
}

3 个答案:

答案 0 :(得分:1)

在这种情况下,您可以设置超时限制,如果在该持续时间内数据发送或接收成功,则表示网络错误,并为离线模式执行该任务。

看到这个链接 -

how to set Http connection timeout on Android

答案 1 :(得分:1)

  public boolean isConnectingToInternet(){

    ConnectivityManager connectivity = (ConnectivityManager)YourActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);
      if (connectivity != null) 
      {
          NetworkInfo[] info = connectivity.getAllNetworkInfo();
          if (info != null) 
              for (int i = 0; i < info.length; i++) 
                  if (info[i].getState() == NetworkInfo.State.CONNECTED)
                  {
                      return true;
                  }

      }
      return false;
}

答案 2 :(得分:1)

尝试处理可以帮助您的两个Timeout exception

try
{
      //do connection process
}
catch (SocketTimeoutException e) 
{
     System.out.println(e.getMessage());
}
catch (ConnectTimeoutException e2)
{
     System.out.println(e2.getMessage());
}