无法接收网络相关事件

问题描述:

我已登记ConnectivityManager.CONNECTIVITY_ACTION BroadcastReceiver,用于接收网络状态事件,但是当打开或关闭我的无线连接时,我的onReceive功能未被调用。无法接收网络相关事件

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

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

在我的Manifest文件中,我具有访问Internet /网络/ 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是否正确注册?

谢谢。

+0

如果您通过清单注册接收器,您是否看到相同的问题?你的wifi连接可用于数据传输吗?是否有可能将''onReceive()''用于'mNetworkStateReceiver'的代码发布? – 2012-01-22 00:42:20

+0

我从来没有试过通过清单文件注册它,我会先尝试它! – User7723337 2012-01-23 11:17:12

+0

你可以考虑奖赏赏金吗?其实它会徒然 – Sameer 2012-01-25 09:25:47

这个工作对我来说:

<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 2015-05-06 05:43:17

+0

你可以看看这个http://*.com/q/30062487/3742271? – Shravan 2015-05-06 05:44:58

尝试使用清单文件

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

MyNetworkStateReceiver应该扩展BroadcastReceiver

+0

我是通过JAVA代码做的,不需要在manifest文件中加这个。 – User7723337 2012-01-23 11:15:48

看起来像一个低级别的问题 - 谷歌搜索错误显示多个ROM黑客论坛和自己的无线网络连接故障。你在测试什么?尝试在其他设备或模拟器上测试。 (我假设你已经尝试过重新启动你的:))

另外,确保您注销,当你的活动/服务被破坏(也许这事做与连接错误)

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

我需要使用这些权限在房子应用程序,我已经建立了使用,不仅用于发送和接收网络数据的无线网络,但是任何类型的网络适配器(LAN,RADIO),我可以过滤通过C中的SDK(设备必须被植入)。但使用这些权限我没有问题。