安卓学习140502:Intent-Filter
来源:互联网 发布:别人的淘宝账号怎么看 编辑:程序博客网 时间:2024/05/07 21:42
当Intent在组件间传递时,组件如果想告知Android系统自己能够响应和处理哪些Intent,那么就需要用到IntentFilter对象。告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个IntentFilter。每个 IntentFilter描述该组件所能响应Intent请求的能力——组件希望接收什么类型的请求行为,什么类型的请求数据。
IntentFilter对象负责过滤掉组件无法响应和处理的Intent,只将自己关心的Intent接收进来进行处理。 IntentFilter实行“白名单”管理,即只列出组件乐意接受的Intent,但IntentFilter只会过滤隐式Intent,显式的Intent会直接传送到目标组件。 Android组件可以有一个或多个IntentFilter,每个IntentFilter之间相互独立,只需要其中一个验证通过则可。除了用于过滤广播的IntentFilter可以在代码中创建外,其他的IntentFilter必须在AndroidManifest.xml文件中进行声明。
IntentFilter中具有和Intent对应的用于过滤Action,Data和Category的字段,一个隐式Intent要想被一个组件处理,必须通过这三个环节的检查。
- 检查 Action:一个Intent只可以设置一个Action,但一个Intentfilter可以持有一个或多个Action用于过滤,到达的Intent只需要匹配其中一个Action即可.如果一个Intentfilter没有设置Action的值,那么,任何一个Intent都不会被通过;反之,如果一个Intent对象没有设置Action值,那么它能通过所有的Intentfilter的Action检查。
- 检查 Data:同Action一样,Intentfilter中的Data部分也可以是一个或者多个,而且可以没有。每个Data包含的内容为URL和数据类型,进行Data检查时主要也是对这两点进行比较,比较规则:如果一个Intent对象没有设置Data:只有Intentfilter也没有设置Data时才可通过检查;如果一个Intent对象包含URI,但不包含数据类型:仅当Intentfilter也不指定数据类型,同时它们的URI匹配,才能通过检测;如果一个Intent对象包含数据类型,但不包含URI:仅当Intentfilter也没指定URL,而只包含数据类型且与Intent相同,才通过检测;如果一个Intent对象既包含URI,也包含数据类型(或数据类型能够从URI推断出),只有当其数据类型匹配Intentfilter中的数据类型,并且通过了URL检查时,该Intent对象才能通过检查。其中URL由四部分组成:它有四个属性scheme、host、port、path对应于URI的每个部分。例如:content://com.wjr.example1:121/files.host和port部分一起构成URI的凭据(authority),如果host没有指定,那port也会被忽略。这四个属性是可选的,但他们之间并不是完全独立的。要让authority有意义,scheme必须要指定。要让path有意思,scheme和authority必须指定。 Intentfilter中的path可以使用通配符来匹配path字段,Intent和Intentfilter都可以用通配符来指定MIME类型。
- 检查 Category:Intentfilter中可以设置多个Category,Intent中也可以含有多个Category,只有Intent中的所有Category都能匹配到Intentfilter中的Category,Intent才能通过检查。也就是说,如果Intent中的Category集合是Intentfilter中Category的集合的子集时,Intent才能通过检查。如果Intent中没有设置Category,则它能通过所有Intentfilter的Category检查。 如果一个Intent能够通过不止一个组件的Intentfilter,用户可能会被问那个组件被激活。如果没有目标找到,会产生一个异常。
0 0
- 安卓学习140502:Intent-Filter
- 安卓开发-intent和intent-filter
- 安卓中的Intent和Intent Filter
- 安卓学习: Intent
- 最通俗易懂的安卓intent intent-filter
- 安卓创建快捷方式相关问题 Intent Intent-filter
- 安卓学习2-Intent
- intent与intent filter学习
- 安卓第十一天笔记-Intent与inter-filter配置
- android学习:intent/filter
- 安卓学习140502:android Intent机制详解
- 【安卓学习】2.Intent的学习
- android学习笔记之Intent&Intent filter
- Intent进阶 和 Intent-filter 学习笔记
- Intent进阶和Intent-filter学习笔记
- Intent进阶 和 Intent-filter 学习笔记
- Intent进阶 和 Intent-filter 学习笔记
- android学习笔记:Intent,Intent Filter
- 安卓学习140502:android:name
- JBPM学习(二):ProcessEngine与Service API
- 关于守护进程的一点感悟
- 在MAC下使用gitosis来配置git服务
- 从长跑中感受绝望,从绝望中体验坚韧,从坚韧中重获信心
- 安卓学习140502:Intent-Filter
- List转换成JSON对象报错(四)
- struts1 重复提交
- JavaSE学习路线图
- sdut2415 Chess (山东第三届省赛)
- 25.觉
- 组卷功能
- JBPM学习(三):管理流程定义
- HDU 3333 Turing Tree