Intentfliter

1、intentFilter的匹配规则

当对Activity、Service、BroadcastReceiver进行隐式调用时,需要指定IntentFilter,这里记录一下IntentFilter的匹配规则。
IntentFilter中的过滤信息有action、category、data,系统预定义了一些action、category、data,同时我们也可以在应用中自己定义。下面对它们的匹配规则做一个介绍。

1.1、action的匹配规则

action是一个字符串,action给的匹配规则是intent中的action必须能够和过滤规则中的action匹配,这里说的匹配是指action的字符串值完全一样。一个过滤规则中可以有一个或多个action,那么只要intent中的action能够和过滤规则中的任何一个action一样即可匹配成功。如果intent中没有指定action,那么匹配失败。
注:action区分大小写。

1.2、category的匹配规则

category也是一个字符串,它的匹配规则要求,如果intent中含有category,那么所有的category必须可以在IntentFilter中找到一样的的category。与action不同的是,intent中可以没有category。如果intent中没有category,系统自动给intent添加(android.intent.category.DEFAULT)这个category。如果IntentFilter里面没有指定其他的category,那么必须指定(android.intent.category.DEFAULT)这个category才能接收隐式调用。

1.3、data的匹配规则

data的匹配规则跟action类似,如果过滤规则中定义了data,那么intent中必须也要设置至少一个data与intentFilter中的data匹配。
data的语法:

<data android:scheme="string"
		android:host="string"
		android:port="string"
		android:path="string"
		android:pathPattern="string"
		android:pathPrefix="string"
		android:mimeType="string" />

data由mimeType和URI两部分组成。mimeType指媒体类型,比如image/jpeg、audio/mpeg4-generic、video/* 等,可以表示图片、文本、视频等不同的媒体格式,而URI中包含的数据就比较多了,下面是URI的结构:

<scheme>://<host>:<post>/<path>|<pathPrefix>|<pathPattern>

其中,

  • scheme,表示URI的模式,一个完整的URI必须包含scheme才能生效。
  • host,URI的主机名,一个完整的URI必须包含host才能生效。
  • port,URI的端口号
  • path、pathPattern、pathPrefix,表示路径信息,其中path表示完整的路劲信息;pathPattern也表示完整的路径信息,区别是在pathPattern中可以包含通配符"*",通配符表示0个或多个任意字符;pathPrefix表示路径的前缀信息。

以下是示例:

content://com.example.projiect:200/folder/subfolder/etc
http://www.baidu.com:80/search/info

值得注意的是,intent的setType方法和setData方法是冲突的,只能设置一个,如果要同时设置,需要使用setDataAndType方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值