隐式意图的匹配规则

1、一个意图过滤器(intent-filter)至少包含一个action,否则他将阻塞所有意图匹配成功;

2、一个意图(intent)中至少包含一个action,否则永远都不会匹配成功;

3、当采用隐式意图使用startActivity(intent)方法激活组件时,由于方法startActivity(intent)内部会自动作如下操作:intent.addCategory("android.intent.category.DEFAULT");因此intent中必须包含category="android.intent.category.DEFAULT"的类别,否则肯定不会匹配成功;

4、如果意图过滤器中有东西,在意图中可以没有照样匹配成功,反过来,如果意图中有的东西,在意图过滤器中没有则一定不会匹配成功;

5、在一个activity中可以写多个意图过滤器,只要有一个能够和intent中的信息匹配成功就可以激活目标组件;

6、如果在意图过滤器中指定了mimeType则在意图中也必须指定相同的mimeType,否则匹配失败;

7、如果在意图过滤器中指定了scheme,则在意图中设置data时必须也指定相同的scheme,否则匹配失败;如果同时在意图过滤器中也指定了host,那么只有当intent中data的内容也能和意图过滤器中的scheme和host相匹配才能成功.如果同时指定了path或者 android:pathPrefix或者android:pathPattern,那么意图中如果指定的data的内容整个和path或者 android:pathPrefix或者android:pathPattern匹配成功即可匹配成功;

8、如果在意图过滤器中只设置了data没有设置type,那么意图中也只能设置data不能设置type才能匹配成功intent.setData(data);

9、如果在意图过滤器中只设置了type没有设置data,那么意图中也只能设置type不设置data才能匹配成功.intent.setType(type);

10、如果在意图过滤器中同时设置了data和type,那么在意图中也必须同时设置data和type才能匹配成功.intent.setDataAndType(data,type);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值