Не в состоянии получить события, связанные с сетью
-
28-10-2019 - |
Вопрос
Я зарегистрировался ConnectivityManager.CONNECTIVITY_ACTION
Broadcastreceiver, для получения сетевых государственных мероприятий, но мой onReceive
Функция не вызывается, когда я включаю или выключаю Wi -Fi -соединение.
Как упоминалось в документах, это липкий вещательный приемник, который уволяется, когда мы регистрируемся для него.
Но я не получаю никаких событий в своем onReceive
Функция, когда я регистрируюсь для этого приемника, что может быть причиной?
В моем манифестном файле у меня есть все разрешения на доступ к подключениям к Интернету/сети/Wi -Fi и их штатам.
Я регистрируюсь с этим намерением, используя следующий код:
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
Что может быть причиной? Есть ли способ выяснить, правильно ли зарегистрирован или нет?
Спасибо.
Решение
Это работает для меня:
<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
Похоже на проблему более низкого уровня - Google Ошибка раскрывает несколько взломанных форумов ROM и их неисправности Wi -Fi. На что вы тестируете? Попробуйте тестирование на другом устройстве или эмуляторе. (Я предполагаю, что вы попытались перезагрузить свой :))
Кроме того, убедитесь, что вы не регистрируете приемник, когда ваша деятельность/служба уничтожаются (возможно, это как -то связано с ошибкой соединения)
PS я знаю, что вы сказали, что делаете, но все же дважды проверьте
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
в вашем манифесте.
Вы также можете попробовать получить разрешения на интернет, Wi -Fi и многоадресную блокировку, попробуйте добавить их в разрешения.
<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"/>
Я обязан использовать это разрешение для приложения в доме, которое я создал, в котором используется не только Wi -Fi для отправки и получения сетевых данных, но и любого типа сетевого адаптера (LAN, радио), который я могу отфильтровать через SDK в C (устройство Должен быть укоренился). Но используя эти разрешения, у меня нет проблем.