Android 无法接收网络相关事件

Android 无法接收网络相关事件,android,broadcastreceiver,android-broadcast,network-connection,Android,Broadcastreceiver,Android Broadcast,Network Connection,我已注册到ConnectivityManager.CONNECTIVITY\u ACTIONBroadcastReceiver以接收网络状态事件,但在打开或关闭wifi连接时,我的onReceive功能未被调用 正如文档中提到的,这是一个粘性广播接收器,当我们注册它时,它会被触发 但是当我注册此接收器时,onReceive函数中没有任何事件,原因可能是什么 在我的清单文件中,我拥有访问Internet/Network/Wifi连接及其状态的所有权限 我正在使用以下代码进行注册: register

我已注册到
ConnectivityManager.CONNECTIVITY\u ACTION
BroadcastReceiver以接收网络状态事件,但在打开或关闭wifi连接时,我的
onReceive
功能未被调用

正如文档中提到的,这是一个粘性广播接收器,当我们注册它时,它会被触发

但是当我注册此接收器时,
onReceive
函数中没有任何事件,原因可能是什么

在我的清单文件中,我拥有访问Internet/Network/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
原因可能是什么?有没有办法确定广播接收机是否正确注册


谢谢。

使用清单文件试试看

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


MyNetworkStateReceiver
应该扩展
BroadcastReceiver

看起来像是一个较低级别的问题-通过谷歌搜索错误可以发现多个ROM黑客论坛及其wifi故障。你在测试什么?尝试在其他设备或模拟器上进行测试。(我假设您已尝试重新启动您的:))

此外,请确保在活动/服务被破坏时取消注册接收者(这可能与连接错误有关)

PS我知道你说过你会的,但还是仔细检查了你的

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


在您的清单中。

您还可以尝试获取Internet、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、无线电),我可以通过C中的SDK进行过滤(设备必须根目录)。但是使用这些权限我没有问题。

这对我来说很有用:

<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>

不要忘记注册所有网络权限。

如果您通过清单注册接收者,您是否会看到同样的问题?您的wifi连接可用于数据传输吗?是否可以发布您在
mnetworkstateceiver
onReceive()中使用的代码?我从未尝试通过清单文件注册它,我将首先尝试!你能考虑奖励赏金吗?否则它会进入vainI。我是通过JAVA代码来做的,不需要在清单文件中添加这个。这就足够了。
对!或者我们必须添加任何其他权限吗?
public class ConnectivityReceiver extends BroadcastReceiver {

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