首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
Intent与IntentFilter
时间:
2015-12-30 15:29:15
阅读:
217
评论:
0
收藏:
0
[点我收藏+]
标签:
Intent与IntentFilter
什么是IntentFilter?
->IntentFilter表示“意图过滤器”。
->IntentFiltery用于使用隐式意图时过滤Intent,即对匹配的Intent"放行",
对不匹配的Intent"阻止"。
配置IntentFilter
->通常在AndroidManifest.xml文件中,系统组件的节点下配置IntentFilter,例如:
IntentFilter,例如:
<activity
android:name="com.example.intent.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在一些应用场景中,可能使用程序代码配置IntentFilter,例如在广播接收者在应用中
IntentFilter的过滤准则
IntentFilter对Intent的以下属性有效的:
(1)Action
(2)Catetory
(3)Data
过滤Action
·每个IntentFilter可以添加多个Action。
·每个action节点中name属性的值可以由开发人员自行指定(一般是包名为前缀),在同一个Android设备中,action的值应该是
不冲突的,因此,该值通常以项目包名作为前缀。
过滤Action
·每个IntentFilter都应该指定至少一个Action,否则它将阻止所有Intent.
·如果Intent对象本身没有指定Action属性,将不参与匹配校验。
·如果Intent对象指定的Action属性与IntentFilter中任意一个Action匹配,则放行。
过滤Category
·每个IntentFilter可以添加多个Category
·与action节点相同,category节点中name属性的值可以由开发人员自行指定,且应该是不会
发生冲突的。
·开发人员可以不为Intent对象指定Category,也可以指定多个Category。
·Android系统必然会为每个Intent对象添加默认的Category,即:
.android.intent.category.DEFAULT
.在过滤规则中,Intent中的每个Category在IntentFilter中都能被找到,则放行,否则将阻止,即
放行的条件为:
IntentFilter中有默认的Category;
IntentFilter中的Category,对比Intent中的Category,只能多,不能少。
过滤Data
·每个IntentFilter可以添加多个Data
·在android:mimeType属性中指定MIME类型时,可以使用通配符,例如:text/* ,video/*等。
过滤Data
·每个Uri的完整格式为:
scheme://host:port:/path
·在IntentFilter中配置Data时,以上属性都是可选的,但它们并不独立
·关于Uri是否匹配:
·如果在IntentFilter中仅指定了scheme,则任意scheme的Uri均匹配,无视host,port.path部分;
·如果在IntentFilter中指定了scheme,host,则任意相同scheme和host的Uri均匹配,无视path部分
·如果在IntentFilter中指定了scheme,host,port,则任意相同scheme和,host,port的Uri均匹配,无视path部分
·如果在IntentFilter中指定了完整的Uri各部分,则要求验证的Uri也要完全匹配
·Data过滤规则:
·如果Intent没有指定Uri和MiME,仅当IntentFilter也没有指定Uri和MIME时放行;
·如果Intent中指定了Uri,但没有指定MIME,且根据Uri无法推断MIME,仅当IntentFilter
指定了相同的Uri且没有指定MIME时放行;
·如果Intent中没有指定Uri,但指定了MIME,仅当IntentFilter也没有指定Uri且指定了相同的
MIME时放行;
·如果Intent中同时指定了Uri和MIME,仅当IntentFilter中也指定了相同的Uri和MIME
时放行,或IntentFilter中没有指定MIME但根据Uri可以推断出MIME时放行
总结:
·IntentFilter可以指定Action,Category,Data来检验是否匹配,匹配的Intent将放行,否则将阻止。
·大致规则如下(通常设置的配置规则):
.关于Action:Intent对象中的Action(最多1个)在IntentFileter中可以被找到;
·关于Category:Intent对象中所有的Category在IntentFilter中都可以找到,
且Intent对象中必然有
android.intent.category,DEFAULT这个Category
Intent与IntentFilter
标签:
原文地址:http://blog.csdn.net/wei_chong_chong/article/details/50433646
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!