Не удается получить события, связанные с сетью
я зарегистрировался в 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 (устройство должно быть корневым). Но используя эти разрешения у меня нет проблем.