Intent使用意图(三)

Intent使用之Data:

AndroidManifest.xml 中 activity 标签下的 intent-filter 中 data 标签的属性含义,通过查找资料,现把 data 标签中的属性含义做一个总结。


Date中有如下几个标签:

android:mimeType=""
    android:scheme=""
    android:ssp=""
    android:sspPrefix=""
    android:sspPattern=""
    android:host=""
    android:port=""
    android:path=""
    android:pathPrefix=""
    android:pathPattern=""

 path or pathPrefix or pathPattern 是指后面的 path 验证可以使用 data 属性中的 android:path、android:pathPrefix 或 pathPattern,你可以添加任意个 data 标签,由于是 “or” ,因此,只要其中任意一个 data 匹配,系统就会选择你的 Activity 启动,当然,如果别的 Activity 也有相同的 data 标签,系统就会给用户弹出一个 Chooser Dialog。


mimeType 也是是用来匹配 Intent 的。比如,当你使用 Intent.setType("text/plain") ,那么系统将会匹配到所有注册 android:mimeType="text/plain" 的 Activity,想获取更多有关 mimeType 的知识请参考:【转】备份:Android 常用 mimeType 表

这里需要十分注意的是 Intent.setType(), Intent.setData,Intent.setDataAndType() 这三个方法!


setType 调用后设置 mimeType,然后将 data 置为 null;

setData 调用后设置 data,然后将 mimeType 置为 null;

setDataAndType 调用后才会同时设置 data 与 mimeType。

额外需要注意的是:如果你在 data 标签中既设置了 mimeType 又设置了 scheme 之内的,那么你的 Intent 需要同时设置匹配的 data 与 mimeType 即调用 setDataAndType ,系统才能匹配到这个 Activity(即便你 mimeType 设置为 "*/*" 也是如此)。当然,如果你没有设置 mimeType,那么调用 setData 进行匹配,如果你设置了任何的 mimeType 将不会匹配到该 Activity。

其中pathpathPrefixpathPattern 之间的区别

  • path 用来匹配完整的路径,如:http://example.com/blog/abc.html,这里将 path 设置为 /blog/abc.html 才能够进行匹配;
  • pathPrefix 用来匹配路径的开头部分,拿上面的 Uri 来说,这里将 pathPrefix 设置为 /blog 就能进行匹配了;
  • pathPattern 用表达式来匹配整个路径,这里需要说下匹配符号与转义。
有关匹配符的相关介绍:

  1. “*” 用来匹配0次或更多,如:“d*” 可以匹配“d”、“dd”、“ddd”...
  2. “.” 用来匹配任意字符,如:“.” 可以匹配“a”、“b”,“c”...
  3. 因此 “.*” 就是用来匹配任意字符0次或更多,如:“.*html” 可以匹配 “abchtml”、“chtml”,“html”,“sdf.html”...
转义字符:

因为当读取 Xml 的时候,“\” 是被当作转义字符的(当它被用作 pathPattern 转义之前),因此这里需要两次转义,读取 Xml 是一

次,在 pathPattern 中使用又是一次。如:“*” 这个字符就应该写成 “\\*”,“\” 这个字符就应该写成 “\\\\”。

今天就先到这边,在下篇中我将会举个小例子,供大家参考。

猜你喜欢

转载自blog.csdn.net/smxueer/article/details/38557495