<<Android开发艺术探索>>读书笔记--IntentFilter

关于IntentFilter的知识,书上和网上都有很多了,这里只简单总结一下。
 
IntentFilter由三部分组成:action、category、data。
action匹配规则:  intent中action至多只有一个,该action应该在IntentFilter的action中能找到。
                (即IntentFilter的action为action1和action2,intent的action为action1可匹配成功)
                 intent的action为null时,与所有action匹配
category匹配规则:intent中category可以有多个,这些category应该在IntentFilter的category中能找到,
                 但允许IntentFilter有其他更多category
                 intent的category理论上不为null,因为android系统会加上“android.intent.category.DEFAULT"
data匹配规则:    intent-filter中的data在intent中都能符合条件。未指定data时,intent中所有data都算匹配

很坑的2个地方:
1. intent的category理论上不为null,因为android系统会加上“android.intent.category.DEFAULT"(很多书上和博客都有提到)
2. intentFilter中必须有action,否则任何隐式匹配失效!
   举个例子,如果intentFilter的category包含"android.intent.category.DEFAULT"和"afunx.intent.category"。
   隐式启动Intent时,addCategory("afunx.intent.category”),但此时IntentFilter是无法匹配成功,除非任意增加一个action

小技巧:
1. 很多地方都说每个android app的入口activity都必须要这个action:"android.intent.action.MAIN"和
   这个category:"android.intent.category.LAUNCHER"但并未深入讲解。LAUNCHER会在android桌面显示出一个图标。
   MAIN就是入口Activity的意思。如果你想要当用户点击"video/mpeg"类型的文件时,可以打开你的应用,除了需要添加相应的data外,
   还需要添加MAIN,否则不能完成该功能。
2. android系统源码中的app应用,不少一个activity都包含多个IntentFilter,这样一个Activity可以响应更多的隐式启动。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值