8.0版本之后的广播
问题
今天做实验时写了两个类继承自广播类,注册静态广播,但是却怎么也收不到静态广播消息
解决
1 | Android 8.0 以前,对于静态注册的广播接收器,发送自定义广播时只需构造Intent并设置action,然后调用sendBroadcast(intent)即可发送;而在Android 8.0 之后,参照官方文档,对于静态注册的广播接收器的管理更为严格,以上代码已不再适用,还需添加如下代码才能实现。(Android 8.0官方文档在文末给出) |
其中pkg为项目包名,cls为静态注册的广播接收器的完整路径。例如:
1 | intent.setComponent(new ComponentName("com.example.broadcasttest","com.example.broadcasttest.MyBroadcastReceiver")); |
1 | 也就是说Android 8.0 之后发送自定义广播更加“精确”,需要精确指定接收器的路径才能发送成功。 |
总结
在Android 8.0 之后想要令多个静态注册的接收器接收这一自定义广播很难办到,因为pkg和cls都已经给定了,除非再构造一个Intent出来,然后重复上述过程,发送两个广播。那么若有一需求要求向很多程序发送该广播,那么该方法就很不实际了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Rick!
评论