Не удается получить события, связанные с сетью

я зарегистрировался в ConnectivityManager.CONNECTIVITY_ACTION BroadcastReceiver, для получения событий состояния сети, но мой onReceive функция не вызывается, когда я включаю или выключаю соединение wifi.

как упоминалось в документах, это липкий широковещательный приемник, который увольняется, когда мы регистрируемся для него.

но я не получаю никаких событий в моей onReceive функция когда я регистрируюсь для этого приемника, что может быть причиной?

в моем файле манифеста у меня есть все разрешения для доступа к интернет/сети / Wifi соединений и их состояний.

я регистрируюсь с этим намерением, используя следующий код:

registerReceiver(mNetworkStateReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));

в моем Logcat я получаю следующий регистр сообщений об ошибках для этого широковещательного приемника:

01-01 00:05:29.804: ERROR/WifiHW(1305): Unable to open connection to supplicant on "/data/system/wpa_supplicant/wlan0": Connection refused

что может быть причиной? Есть ли способ узнать, зарегистрирован ли BroadcastReceiver должным образом или нет?

спасибо.

4 ответов


это работает для меня:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<receiver android:name=".receiver.ConnectivityReceiver">
   <intent-filter>
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
   </intent-filter>
</receiver>

код:

public class ConnectivityReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
      Log.d(ConnectivityReceiver.class.getSimpleName(), "action: "
              + intent.getAction());
  }
}

и не забудьте зарегистрировать все сетевые разрешения.


попробуйте использовать файл манифеста

<receiver android:name=".MyNetworkStateReceiver" >
    <intent-filter >
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

класс MyNetworkStateReceiver должны распространяться BroadcastReceiver


выглядит как проблема более низкого уровня-Googling ошибка показывает несколько форумов взлома ROM и их неисправности wifi. Что ты тестируешь? Попробуйте протестировать на другом устройстве или эмуляторе. (Я предполагаю, что вы пытались перезагрузить свой:))

кроме того, убедитесь, что вы отменяете регистрацию приемника, когда ваша активность/служба уничтожается (возможно, это связано с ошибкой подключения)

PS Я знаю, что вы сказали, что делаете, но все же дважды проверьте вас есть

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

в манифесте.


вы также можете попробовать получить разрешения для Интернета, WIFI и многоадресной блокировки, попробуйте добавить их к разрешениям.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>

Я должен использовать эти разрешения для встроенного приложения, которое использует не только WiFi для отправки и приема сетевых данных, но и любой тип сетевого адаптера (LAN, RADIO), который я могу фильтровать через SDK в C (устройство должно быть корневым). Но используя эти разрешения у меня нет проблем.