Intent过滤器

本文介绍了Android系统中Intent过滤器的工作原理,它是如何通过匹配Intent的动作、类别和数据来找到合适的Activity、Service或BroadcastReceiver。Intent过滤器可以在AndroidManifest.xml中定义,包括<action>、<category>和<data>标签来指定组件支持的动作、类型和数据格式。匹配规则涉及动作、类别的匹配,以及Uri数据部分的匹配,并考虑了优先级。IntentResolutionDemo示例展示了如何注册和配置Intent过滤器。
摘要由CSDN通过智能技术生成

隐式启动Activity时,并没有在Intent中指明Acitivity所在的类,因此,Android系统一定存在某种匹配机制,使Android系统能够根据Intent中的数据信息,找到需要启动的Activity。这种匹配机制是依靠Android系统中的Intent过滤器(Intent Filter)来实现的。
Intent过滤器是一种根据Intent中的动作(action)、类别(category)和数据(data)等内容。对适合接收该 Intent 的组件进行匹配和筛选的机制。Intent过滤器可以匹配数据类型、路径和协议,还可以确定多个匹配项顺序的优先级(priority)。应用程序的Activity、Service和 BroadcastReceiver 组件都可以注册Intent过滤器。这样,这些组件在特定的数据格式上则可以产生相应的动作。
为了使组件能够注册Intent过滤器,通常在AndroidManifest.xml 文件的各个组件下定义 < intent-filter >节点,然后再< intent-filter >节点中声明该组件所支持的动作、执行的环境和数据格式等信息。当然,也可以在程序代码中动态的为组件设置Intent过滤器。< intent-filter >节点支持< action >标签 、 < category >标签 和 < data >标签,分别用来定义Intent过滤器的动作、类型和数据。 < intent-filter >节点支持的标签和属性说明如下图:
< intent-filter > 节点属性

标签 属性 说明
action android: name 指定组件所能响应的动作
category android: category 指定以何种方式去服务Intent请求的动作
data Android: host
android: mimetype
android: path
android: port
android: scheme
指定一个有效的主机名
指定组件能处理的数据类型
有效的URI路径名
主键的有效端口号
所需要的特定协议

< category >标签用来指定Intent过滤器的服务方式,每个Intent过滤器可以定义多个< category >标签,我们可以使用自定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值