Intent和IntentFilter

本文详细介绍了Android中Intent的两种类型——显式Intent和隐式Intent,以及IntentFilter的匹配规则,包括action、data和category属性的匹配条件。Intent作为组件间交互的重要手段,而IntentFilter则是实现隐式Intent匹配的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Intent和IntentFilter

1.Intent
Intent被称为意图,是程序中各组件进行交互的一种重要方式,它可以指定当前组件执行动作,也可以在不同组件之间进行数据传递。一般用于启动Activity,Service以及发送广播等。
1.显式Intent
显示Intent指的是直接指定目标组件使用Intent显式指定要跳转的目标Activity
代码如下(示例):
Intent intent = new Intent(this,SecondActivity.class);
starActivity(intent);
该代码创建的Intent对象传入了2个参数,第一个参数是this表示当前的Activity,第二个参数是SecondActivity.class表示要跳转到的目标Activity。
2.隐式Intent
隐式Intent不会明确指出需要激活的目标组件,它被广泛地应用在不同应用程序之间传递消息。Android系统会使用IntnetFilter匹配相应的组件,匹配的属性主要包括:
属性作用
action表示Intent对象要完成的动作
data表示Intent对象要完成的动作
category表示为action添加的额外信息
IntentFilter
当发送一个隐式Intent后,Android系统会将它与程序中的每一个组件的过滤器进行匹配,匹配属性有action,data,category,需要这三个属性都匹配成功才能唤起相应的组件。
1.action属性匹配规则
action属性用来指定Intent对象的工作
<intent-filter>
	<action android:name="android.intent.action.EDIT">
</intent-filter>
< intent-filter >标签中间可以罗列多个action属性,但是当使用隐式Intent激活组件时,只要Intnt携带的action与其中一个< intent-filter >标签中action的声明相同,action属性就匹配成功。
2.data属性匹配规则
data属性用来指定数据的URI或者数据MIME类型,它的值通常与Intent的action属性有关联。
<intent-filter>
	<action android:mimeType="video/mpeg" android:scheme="http...">
</intent-filter>
< intent-filter >标签中间可以罗列多个data属性,每个data属性可以指定数据MIME类型和URI。MIME类型可以表示image/ipeg、video/*等媒体类型。
隐式Intent携带的data数据只要与IntentFilter中的任意一个data声明相同,data属性就匹配成功。
2.category属性匹配规则
category属性用于action添加额外信息,一个IntentFilter可以不声明category属性,也可以声明多个category属性。
<intent-filter>
	<category android:name="android.intent.category.DEFAULT">
</intent-filter>
隐式Intent中声明的category必须全部能够与某一个IntentFilter中的category匹配才算匹配成功。IntentFilter中罗列的category属性数量必须大于或者等于隐式Intent携带的category属性数量时,category属性才能匹配成功。如果一个隐式Intent没有设置category属性,那么它可以通过任何一个IntentFilter(过滤器)的category匹配

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值