Android 静态广播无法接收
之前的项目都是固定的板卡Android 8.0之前的,今天适配新的板卡 Android 12 上意外发现 广播无法接收到消息 在此记录!
Android 8.0 之后 谷歌对静态广播做了一些限制,具体如下!
![](https://img.haomeiwen.com/i13184479/bf362e5db6429fc3.png)
就这么个意思,怎么改呢?
发送部分代码:
在当前应用发送广播发送:
Intent intent =new Intent("com.example.broadcasttest.MY_BROADCAST");
intent.putExtra("message", "send a message!!!");
intent.setPackage(getPackageName());
sendBroadcast(intent);
发送给其他应用的广播:
Intent intent =new Intent("com.example.broadcasttest.MY_BROADCAST");
intent.setComponent(new ComponentName("接收广播的包名", "接收广播的包名.MyBroadcastReceiver"));
intent.putExtra("message", "send a message!!!");
sendBroadcast(intent);
这个地方注意下 setComponent()
![](https://img.haomeiwen.com/i13184479/a4aa0d21b796632a.png)
两个参数 pkg :发送指定应用的包名 cls :指定发送到广播接收器的类名,必须是全名,带上包名!!!
接收代码:
AndroidManifest中记得增加这个广播权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
![](https://img.haomeiwen.com/i13184479/6bc03a0f13767bd9.png)
最后别忘了注册
![](https://img.haomeiwen.com/i13184479/0badf731e3fce609.png)
这里的exported属性表示是否允许这个广播接收器接收本程序以外的广播,enabled属性表示是否启用这个广播接收器!都得是true
好了,就这样!