过滤分为四大类验证
<action>
<category>
<data>
<ssp>
0.四大组件可以申明多个intent-fliter标签。
1. Action验证是必选项,如果没有Action的话,验证是失败的。Action验证是或者的关系,即是满足一个就通过验证。
eg:
<intent -infliter >
<actionandroid:name="Action1"/>
<actionandroid:name="Action2"/>
<actionandroid:name="Action3"/>
</intent -infliter ><
action = "Action1"
通过验证
2.category是可选项,验证规则是在某个intent-fliter标签申明了多个标签的话,则请求验证的intent的所有category都必须是当前请求验证的intent-fliter标签category的子集。
<intent -infliter >
<category android:name=" category 1"/>
<category android:name=" category2"/>
<category android:name=" category3"/>
</intent -infliter ><
eg2:
Intent intent = new Intent();
intent .addCategory("category1");
intent .addCategory("category2");
通过验证
eg3:
Intent intent = new Intent();
intent .addCategory("category1");
intent .addCategory("category2");
intent .addCategory("category4");
没有通过验证
3.data验证。data的格式 : scheme://host:port/path
3.1:验证必须是从左到右开始逐个验证不允许跳跃验证。
eg:
3.2:scheme是必须要有的。
3.3:验证的属性
a android:scheme=""
b android:host=""
c android:port=""
d android:path=""
e android:pathPattern=""
f android:pathPrefix=""
g android:mimeType=""
h android:ssp="" 4.4 plus
i android:sspPattern="" 4.4 plus
j android:sspPrefix="" 4.4 plus
对于a、b、c、d他们的关系是与的关系,只有全部满足才算通过。
对于d、e、f他们的关系是或的关系,通过任意一个都算通过。
对于uri(a、b、c、d、e、f)和mimeType的关系是与的关系。只有全部满足才算通过。记住如果请求验证的的Intent含有uri或者mimeType,而标签含有uri或mimeType那么请求验证是失败的。反之也失败的。
4. ssp 见https:/zybuluo.com/flyouting/note/18525
注1:path 是用于完整路径匹配. eg: /index.jsp
注2:pathPattern是路径匹配模式有两种形式 "*" 、 ".*"
*代表的是*前的一个字符有0个或多个。 ab*c匹配 ac abc abbc abbbc
.*代表的是 0个或多个字符串。 ab*c匹配 abc abec abffc abuuuuc
注3:pathPrefix是用于路径前缀匹配. /in 匹配 /in.jsp index.jsp .....
注4:host也可以用通配符不过host只能包含一个*的通配符,而不能包含其他字符。