6

Я зарегистрировался на 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 

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

Спасибо.

+0

Вы видите ту же проблему, если зарегистрируете приемник через манифест? Можете ли вы использовать Wi-Fi для передачи данных? Можно ли разместить код, который вы используете, в 'onReceive()' для 'mNetworkStateReceiver'? –

+0

Я никогда не пытался зарегистрировать его через файл манифеста, я попробую его первым! – User7723337

+0

Можете ли вы посчитать, что награждают bounty.otherwise, это будет напрасно – Sameer

ответ

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()); 
    } 
} 

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

+0

Достаточно ' ' правильно! или мы должны добавить любое другое разрешение? – Shravan

+0

Можете ли вы взглянуть на это http://stackoverflow.com/q/30062487/3742271? – Shravan

3

попробовать его с помощью файла манифеста

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

Класса MyNetworkStateReceiver должен простираться BroadcastReceiver

+0

Я делаю это через код JAVA, не нужно добавлять это в файл манифеста. – User7723337

0

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

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

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

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

в вашем манифесте.

0

Вы также можете попробовать получить разрешения на доступ в Интернет, 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"/> 

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

Смежные вопросы