只有一个intent同时匹配 action、category、 data 才算完全匹配,只有 完全匹配 才能启动activity
一个 activity 可以 有多个 intent-filter ,一个 intent 只要成功匹配任意一组intent-filter 就可以启动activity
action的匹配规则
- action的匹配要求Intent中的action 存在且必须和过滤规则中的其中action 相同
- action 是区分大小写的
category 的匹配规则
intent中的 category 只要有一个和 匹配规则中的category 相同就可以匹配
intent 不设置 category ,也可以和其匹配,因为系统在调用 startActivity 或者 startActivity ForResult的时候会自动添加 android.intent.category.DEFAULT 这个category
为了我们的activity能够接受隐式调用,必须在IntentFilter 中添加 android.intent.category.DEFAULT 这个category
data 的匹配规则
如果过滤规则中有data,那么intent中也必须定义可匹配的data
data由 ** 两部分 **组成:mimeType 和Url
mimeType 指媒体类型,可以表示图片、文本、视频等媒体格式
Url 的结构如下 : <scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>]
scheme : Url的模式,如http、file、content等,没有的话整个 url都是无效的
host : Url的主机名,如www.baidu.com ,没有的话,url 无效
port:Url的端口号,如 80 ,只有前两者指定,才有意义
path>|<pathPrefix>|<pathPattern> 表示路径信息,分别表示完整的路径信息、完整的路径信息(可以含通配符)、路径的前缀信息
分情况说明data的匹配规则
媒体类型是:图片 没有指定Url但是有默认值,Url 的默认值是content和file