android intent-infliter 过滤验证

过滤分为四大类验证

<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只能包含一个*的通配符,而不能包含其他字符。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。