Проблема с проверкой подключения к сети

У меня есть 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)).

Как я могу правильно выполнить то, что я хочу здесь?


person Andrew    schedule 06.10.2010    source источник


Ответы (1)


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

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;
}
person danh32    schedule 06.10.2010
comment
Да это сработает. Я нашел это, но еще не обновил этот пост. Спасибо - person Andrew; 06.10.2010
comment
А также добавьте ‹uses-permission android:name=android.permission.ACCESS_NETWORK_STATE /› разрешение на манифест - person DuyguK; 09.02.2013