广播静态注册多个action,scheme导致的冲突

来源:互联网 发布:美女 出租屋改造知乎 编辑:程序博客网 时间:2024/05/16 08:20

本篇博客仅记录项目中遇到的广播注册多个不同事件遇到广播失效问题

在项目有个需求需要注册一个广播用于监听系统开关机、应用卸载安装以及一个项目中自定义action事件,开发过程中将这些事件静态注册到了一个intent-filter中,如下图所示

这里写图片描述

结果运行起来发现只能接收到系统安装卸载应用事件,前三个注册的开关机以及自定义广播事件都无法收到了。 后来怀疑是加了导致的,去掉后果不其然,开关机和自定义事件都能接收到了,但是坑爹的是应用安装和卸载事件又搜不到了,后来上网查了一下发现卸载安装广播必须得加这句话才能收到,看来必须的加上这句话了,于是又从其他方向出发,上网百度搜了一下导致广播失效,结果翻了半天终于发现一个前辈的类型的列子http://blog.csdn.net/andyhuabing/article/details/49679819 说是需要将这两类action动作分开写,参照前辈例子改良注册方式如下
这里写图片描述

发现果然好使了,探究其原因发现是因为关键的这句代码

<category android:name="android.intent.category.HOME"/>

让两个inten-filter的广播事件都生效了(去掉这句代码即时分开写intent-filter也无法生效)。

此问题到此告一段落,然后查找了资料也没找到在广播中加入此行代码对广播的作用是什么,希望有明白这里原理的同学能留言告知一下。