Intent-Filter简介及URI
Intent-Filter又称意图过滤器,在Intent-Filter中存在三个属性,分别是action、category、data,在activity类中进行intent操作时,他会根据action、category、data进行匹配。
匹配依次会进行如下几步:
动作测试:
即先对action进行匹配,如果找到与之某一项匹配时,进行第二步匹配。
类别测试:
即第二步匹配,在类别测试中,对于进行隐式意图时,必不可少的一个属性就是
< category android:name="android.Intent.Category.DEFAULT" />,同样与上一步一样找到某一项匹配就进行下一步匹配操作。
数据测试:
即第三步匹配,在数据测试中,会有很多属性,这里主要讲以下几个:
android:scheme 协议
android:host 主机/IP
android:port 端口
android:path 路径
我们在activity类中,通过intent来调用setData方法时,传输的参数是一个Uri,那么对于一个Uri,它必有一个规则,比如说,http://blog.csdn.net/huai814586181 这里http就是他的协议,在Intent-Filter中的data中设置他的android:scheme="http",blog.csdn.net就是他的主机,即android:host="blog.csdn.net",huai814586181就是他的路径,即android:path="/huai814586181",那么还有一个端口呢?就在主机后面加上一个冒号再加端口号就可以了,同样在Intent-Filter中设置如下:android:port="端口号"。
在匹配的时候,我们还可以加一个android:mimeType,参数的话设置为
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
后面那一串。以上参数来自于mime百度百科。自个儿可以百度一下就知道了。
这里主要讲一个注意点,就是在同时使用setData和setType时遇到的问题,当我们单单是这样用,是不可以的,看一下下面的截图就明白了:
在使用setType时,会自动清除setData设置的,在使用setData的时候会自动清除setType设置的。
那如果想两个都用该怎么办呢?
这里提供了这样一个方法:
intent.setDataAndType(data, type),把这两个合二为一的一个方法。
在上面提到了URI,那么来简单说一下什么是URI。
URI,全称Uniform Resource Identifier,中文叫做统一资源标识符。用于标识某一互联网资源名称的字符串。
在URI中又包含了两个子集:URL和URN
URL:Uniform Resource Locator,统一资源定位符
目前URI的最普遍形式就是无处不在的URL或统一资源定位器。
URN:Uniform Resource Name,统一资源名称。
URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。
现在最常用的就是URL了。这个简单了解一下。。。
THE END~