android开发艺术探索 学习笔记(三) IntentFilter的匹配规则

一.什么是IntentFilter的匹配规则

当我们使用Intent来启动Activity时大多数情况是直接把要启动的Activity传递给Intent,这叫显式调用.
还有一种方法是隐式调用,通过给Acitivity加上一些过滤信息,当与启动时的过滤信息相匹配时就启动,有种对号入座的意思.

二.3种过滤信息

1.action
2.data
3.category
以上每种过滤信息都可以有多条,并且每种都要匹配。

三.action的匹配规则

action很简单,只要Intent中有一条action与之匹配即可,但要注意的是字符串值得完全相同。大小写敏感。

四.category的匹配规则

category的匹配规则,不同于action,如果你往Intent中添加一条category
那么Acitivity的IntentFilter中也必须有一条category与之匹配
需要注意的是,IntentFilter中必须加上一条
<category android:name="android.intent.category.DEFAULT"/>
Intent上可以不用加,系统默认加上

五.data的匹配规则

data的匹配规则相较复杂,它有个结构
[scheme]://[host]:[port]/[path or pathPrefix or pathPattern]
scheme:URI的模式
host:URI的主机名
port:URI的端口
[path | pathPrefix | pathPattern]三个属性只要其一匹配就好,代表路径信息
由于正则表达式的规范,想表示真实的字符串,"*"要写成"\\*","\"要写成"\\\\"
在Intent中添加data过滤信息要注意,setType方法和setData,他们会互相清除,对方所赋值的信息
可以使用setDataAndType方法解决。

六.其他

1.一个Activity可以有多个IntentFilter,只要其一匹配。
2.Server最好用显式调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值