Activity 中 intent 匹配规则

要想使用隐式 Intent 成功启动 Activity, 必须保证 Intent 中 action、category、data 的设置和要启动的 Activity 的 IntentFilter 相匹配。
总结起来一句话,intent 中的 action category data 全部要来自于 IntentFilter,这样就算作匹配。

Intent 和 IntentFilter 的使用方法:

  1. IntentFilter 中可以设置上的 1-n 个 action、1-n 个 category、0-n 个data
  2. Intent 上可以设置 0-1个 action、0-n 个 category、0-1 个 data
  3. IntentFilter 上的 data 节点上可以设置 scheme、host、port、path、mimetype 等等
  4. Intent 上可以使用 Uri 设置 data,使用字符串设置 mimetype
  5. Intent 上的 data 和 type 要么同时设置上,要么只设置 data,要么只设置 type
  6. Intent 要成功启动 Activity 必须和 Activity 的 IntentFilter 规则相匹配

Intent 和 IntentFilter 的相匹配规则:

  1. 首先对于 action、category、data 三种类型节点, 如果 IntentFilter 有配置上几种,除 action 类型外,Intent 也必须配置上几种。比如,IntentFilter 下有 5 个 action 和 8 个 category,Intent 至少要配置其中一个 category;如果 IntentFilter 下有 6 个 action,8 个category,2 个 data,Intent 至少要配置一个 category,一个 data
  2. Intent 上如果配置多个 category,这些 category 必须都在 IntentFilter 中存在
  3. 系统默认会给所有 Intent 配置 “android.intent.category.DEFAULT” category。鉴于这种情况,为了防止 Intent 不能启动 Activity,IntentFilter 下一般也会配置 “android.intent.category.DEFAULT” category

demo下载地址:http://url.cn/dWh0Qh

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值