1.3 IntentFilter的匹配规则
1、过滤信息
(1)包含:action、category、data,下面详细分析各种属性的匹配规则。
action:Intent中action的值和过滤规则中的任何一个action的值相等;值区分大小写;action必须存在。
category:Intent中所有category必须在过滤规则中存在;category可以没有;因为有默认值。
data:如果过滤规则中定义了data,则Intent中必须定义;过滤规则中出现的data部分也出现在Intent的data中。
注:
data的语法结构:data由mimeType和URI组成,mimeType指媒体类型,例如:image/jpeg、video/*等;
URI的语法结构:<scheme>://<host>:<port>/[<path>/<pathPrefix>/<pathPattern>]
其中:
scheme默认值为content、file。意为:模式。
host:意为:主机名。
port:意为:端口。
path:意为:完整路径。
pathPrefix:意为:路径前缀信息。
pathPattern:意为:可含通配符的完整路径,若需要转义,可参考以下例子:*==>\\*;\==>\\\\
2、Intent中设置Data和Type:
intent.setDataAndType(Uri.parse("file://abc"), "image/jpeg");
3、隐式启动Activity时判断是否匹配Intent的方法:
(1)PackageManager的resolveActivity,返回List<ResolveInfo>;(成功匹配的)
(2)Intent的resolveActivity,返回ResolveInfo;(最佳匹配的)