我已经注册到 ConnectivityManager.CONNECTIVITY_ACTION
BroadcastReceiver,用于接收网络状态事件,但是当我打开或关闭我的 wifi 连接时,我的 onReceive
函数没有被调用。
如文档中所述,这是一个 Sticky Broadcast Receiver,当我们注册它时会被触发。
但是当我注册此接收器时,我的 onReceive
函数中没有收到任何事件,这可能是什么原因?
在我的 list 文件中,我拥有访问 Internet/网络/Wifi 连接及其状态的所有权限。
我正在使用以下代码注册此 Intent :
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 是否注册正确?
谢谢。
最佳答案
这对我有用:
<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());
}
}
并且不要忘记注册所有网络权限。
关于android - 无法接收网络相关事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851763/