IntentFilter的匹配规则

以下内容整理自互联网,仅用于个人学习


只有当action类别、category类别和data类别同时匹配,才能成功启动Activity。另外,一个Activity可用有多个intent-filter,一个Intent只要能匹配任何一组intent-filter即可成功启动对应的Activity。

匹配过程:

  1. 加载所有的Intent Filter列表
  2. 去掉action匹配失败的Intent Filter
  3. 去掉url匹配失败的Intent Filter
  4. 去掉Category匹配失败的Intent Filter
  5. 判断剩下的Intent Filter数目是否为0。如果为0查找失败返回异常;如果大于0,就按优先级排序,返回最高优先级的Intent Filter

action匹配规则

至少要有一个action与之相同。

category匹配规则

必须为其子集。
注意,系统在调用startActivity或startActivityForResult的时候,会默认给Intent加上“android.intent.category.DEFAULT”这个category,所以,为了我们的Activity能接收隐式调用,必须在intent-filter中加“android.intent.category.DEFAULT”这个category。

data匹配规则

至少有一个data与之相同。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容