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あなたを助けることができる2つを処理してみてください。

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 に答える