本文主要来分享隐式Intent相关的标签配置。如有错误,欢迎指正。
更多Android技术分享可以关注我的Android技术圈子,也可以join in 扣扣群:690347536,交流Android开发技能。
<intent-filter android:icon="drawable resource"
android:label="string resource"
android:priority="integer" >
. . .
</intent-filter>
android:icon
图标标识。android:label
标签标识。android:priority
执行优先级,值越大,优先级越高,取值范围-1000-1000。android:order
执行过滤时的顺序。
<action android:name="string" />
- android:name
action名称。
<category android:name="string" />
- android:name
category名称。
<data android:scheme="string"
android:host="string"
android:port="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:mimeType="string" />
- android:scheme
URI的scheme - android:host
URI的host - android:port
URI的端口 - android:path
- android:pathPrefix
- android:pathPattern
4、5、6 表示URI中的路径规则。 - android:mimeType
MINE的多媒体类型。
以上标签都是Intent的在隐式匹配中可能会用到的规则,此处做一些匹配说明:
总的匹配原则是:
- 匹配过滤列表时需要同时匹配过滤列表中的action,category,data;
- 一个过滤列表中可以有多个action,category,data并各自构成不同类别,一个Intent必须同时匹配action类别,category类别和data类别才算完全匹配。
- Activity,Service,BroadcastReceiver中都可包含多组intent-filter,一个Intent只要匹配任何一组intent-filter就算匹配成功。
action的匹配规则:
- action的name属性在做匹配时是严格区分大小写的;
- Intent中必须存在action,可以没有category;
- 匹配规则中可以同时有多个action,但是Intent中的action只需与其中之一相同即可匹配成功。
category的匹配规则:
- 虽然可以在Intent中不添加category,但是在启动Activity,Service组件或者发送广播时,系统会自动添加一个”android.intent.category.DEFAULT”默认的category。
- Intent中可以同时设置多个category,一旦设置多个category,那么每个category都必须能够和过滤条件中的某个category匹配成功。
data的说明及匹配规则:
- 在JS调用原生组件时,data非常有用;
- 如果Intent-filter中定义了data,那么Intent中必须要定义可匹配的data;
- data有两部分组成:mineType和URI,
- mineType是媒体类型,可以表示图片、文本、视频等不同媒体格式;
- URI的结构:<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPatten>],
path、pathPattern可以表示完整的路径信息,其中pathPattern可以包含通配符*,表示0个或者多个任意字符;pathPrefix只表示路径的前缀信息。
更多Android技术分享可以关注我的Android技术圈子,也可以join in 扣扣群:690347536,交流Android开发技能。