概述
关于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可以响应更多的隐式启动。
最后
以上就是精明画板为你收集整理的<
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复