2

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

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();
}
4

3 回答 3

1

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

try
{
      //do connection process
}
catch (SocketTimeoutException e) 
{
     System.out.println(e.getMessage());
}
catch (ConnectTimeoutException e2)
{
     System.out.println(e2.getMessage());
}
于 2013-11-08T06:22:22.250 回答
1

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

看到这个链接-

如何在 Android 上设置 Http 连接超时

于 2013-11-08T04:54:41.403 回答
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;
}
于 2013-11-08T04:55:55.843 回答