Android:Intent匹配及mimeType匹配,这⼀篇就够了!!
activity的启动分为显式调⽤和隐式调⽤。显式调⽤需要明确指定组件的信息,来完成调⽤。。隐式调⽤是通过匹配⽬标组件的IntentFilter完成的。⼀个组件可以设置多个IntentFilter来匹配。IntentFilter中的过滤信息有action、category、data组成。只有⼀个Intent同时匹配action 类别,category类别,data类别才算完全匹配,才能启动对应的组件。⼀个intent只需要匹配任何⼀组intentFilter就可以启动对应组件。下⾯⼀⼀讲解对应的匹配规则。
⼀、action的匹配规则
action是⼀个字符串,⼀个过滤规则(intentFilter)可以有多个action。⼀个IntentFilter必须有⼀个action,如果没有那么则匹配失败。多个action只要匹配成功⼀个即可匹配成功,
document有安卓版吗结论:
Intent中的action必须存在且必须和过滤规则中的其中⼀个action相同(字符串值完全⼀样,区分⼤⼩写)
⼆、category的匹配规则
category是⼀个字符串,Intent可以没有category,但是如果⼀旦有category,不管有⼏个,每⼀个都要
能够和过滤规则中的任何⼀个category相同。简⽽⾔之,Intent中携带Category要全部能和IntentFilter中的Category匹配。
注意:
系统在调⽤startActivity或者startActivityForResult时,会默认为Intent添加“android.intent.category.DEFAULT"这个category。
所以隐式启动的组件必须包含<category android:name="android.intent.category.DEFAULT" />
如果Intent中的存在category,那么这些category都必须和Activity过滤规则中的category相同,才能和这个Activity匹配。Intent中的category数量可能少于Activity中配置的category数量,但是Intent中的这category必须和Activity中配置的category相同才能匹配。通俗的讲就是,⽐如Intent中有3个category,activity的过滤规则中有5个category,那intent中的3个category需要是activity的过滤规则中有5个category中的3个,若有任意⼀个未出现在这5个⾥⾯,匹配就失败。
三、data的匹配规则
Data⼀般由两部分组成mimeType和URI。
1. MimeType
mineType指资源类型包括⽂本、图⽚、⾳视频等等。可以表⽰图⽚、⽂本、⾳视频等等不同的数据格式。以下是常见⽂件格式的mimeType。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论