0

いくつかのWebサービス呼び出しを行うIntentServiceがあります。これらの電話をかける前に、デバイスにネットワーク接続があることを確認します。私はこのようにしています:

 private boolean isOnline() {
  ConnectivityManager connec =  (ConnectivityManager)getSystemService(getApplicationContext().CONNECTIVITY_SERVICE);
  return connec.getNetworkInfo(0).isConnectedOrConnecting();
 }

残念ながら、Androidデバイスでデバッグしている場合、ネットワークとワイヤレス接続の両方があると、これはfalseを返します。

connec.getNetworkInfo(0)に関するいくつかの興味深い情報:

mIsAvailable = true
mNetworkType = 0
mTypeName = "mobile"
mState.name = "DISCONNECTED"

明らかに、このコードは十分ではありません(おそらく、ネットワークを介してビットを送信し、無線をオンにした場合にのみtrueが返されますか?)。さらに、ConnectivityManagerに精通していないため、おそらくすべてのネットワークをスキャンする必要があると思います(つまり、getNetworkInfo(0からN))。

ここで望んでいることを適切に達成するにはどうすればよいですか?

4

1 に答える 1

4

これを試して:

public static boolean isNetworkConnected(Context context){
    ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo network = cm.getActiveNetworkInfo();

    if(network != null){
        return network.isAvailable();
    }

    return false;
}
于 2010-10-06T18:44:39.670 に答える