本篇文章主要介绍了"cherry filter 你必须弄懂的Intent Filter匹配规则",主要涉及到cherry filter方面的内容,对于移动开发感兴趣的同学可以参考一下:
Intent简介 Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行...
如果Intent没有提供type,系统将从data中得到数据类型。和action一样,同action类似,只要Intent的data只要与Intent Filter中的任一个data声明完全相同,data方面就完全匹配成功。
data由两部分组成:mimeType和URI
MineType指的是媒体类型:例如imgage/jpeg,auto/mpeg4和viedo/*等,可以表示图片、文本、视频等不同的媒体格式
uri则由scheme、host、port、path | pathPattern | pathPrefix这4部分组成
://:/[||]
例如:
content://com.wooyun.org:200/folder/etc
http://www.wooyun.org:80/search/info
Intent的uri可通过setData方法设置,mimetype可通过setType方法设置。
需要注意的是:若Intent Filter的data声明部分未指定uri,则缺省uri为content或file,Intent中的uri的scheme部分需为content或file才能匹配;若要为Intent指定完整的data,必须用setDataAndType方法,究其原因在,setData和setType方法的源码中我们发现:
public Intent setData(Uri data) {
mData = data;
mType = null;
returnthis;
}
public Intent setType(String type) {
mData = null;
mType = type;return this;
}
这两个方法会彼此互相清除对方的值(这个比较逗),即setData会把mimeType置为null,setType会把uri置为null。
下面我们来举例说明一下data的匹配。首先我们先来看一下Intent Filter中指定data的语法: