Проблема проверки подключения к сети - PullRequest
0 голосов
/ 06 октября 2010

У меня есть IntentService, который выполняет некоторые вызовы веб-службы.Перед выполнением этих звонков я проверяю, что устройство подключено к сети.Я делаю так:

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

К сожалению, когда я отлаживаю на своем устройстве Android, это возвращает false, когда у меня есть и сеть, и беспроводное соединение.

Некоторые интересныеtidbits о connectc.getNetworkInfo (0):

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

Очевидно, что этого кода недостаточно (возможно, он вернет true, только если я отправлю бит по сети и включу радио?).Более того, поскольку я не очень хорошо разбираюсь в ConnectivityManager, я предполагаю, что мне, вероятно, следует сканировать все сети (например, getNetworkInfo (от 0 до N)).хочешь здесь?

1 Ответ

4 голосов
/ 06 октября 2010

Попробуйте это:

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;
}
...