Android学习之——intent-fliter配置之data属性
2013-08-23 14:41
441 查看
Data属性通常用来向Action属性提供操作的数据。Data属性接受一个Uri对象,比如:
scheme://host:port/path or pathPrefix or pathPattern(这里的是scheme而不是schema)
比如上面的Uri字符串,content就是scheme部分,com.android.contacts就是host部分,port就是端口,这里省略,contacts/1就是path部分。
在代码中进行定义的时候Data属性和Type属性会进行相互覆盖:
如果为intent先设置Type属性,然后设置Data属性,Type属性就会被Data属性所覆盖。
![](http://img.my.csdn.net/uploads/201308/23/1377240276_5224.jpg)
如果为intent先设置Data属性,然后设置Type属性,Data属性就会被Type属性所覆盖
![](http://img.my.csdn.net/uploads/201308/23/1377240276_9168.jpg)
那么,如果希望同时设置Intent的Data属性和Type属性,应调用Intent的setDataAndType()方法
![](http://img.my.csdn.net/uploads/201308/23/1377240279_4512.jpg)
AndroidManifest.xml中 data属性的具体格式如下:
mimeType:用来设置该Data所指定的Uri对应的MIME类型,可自定义,只要符合abc/def格式即可。声明该组件所能匹配的Intent的Type属性。
scheme:用来声明该组件所能匹配的Intent的Data属性的scheme部分。
host:用来声明该组件所能匹配的Intent的Data属性的host部分。
port:用来声明该组件所能匹配的Intent的Data属性的port部分。
path:用来声明该组件所能匹配的Intent的Data属性的path部分。
pathPrefix:用来声明该组件所能匹配的Intent的Data属性的path前缀。
pathPattern:用来声明该组件所能匹配的Intent的Data属性的path字符串模版。
启动组件时的要求:
Intent的Type属性也用于指定该Intent的要求,必须对应组件中<intent-filter.../>元素中<data.../>子元素的mimeType属性与此相同,才能启动该组件。
Data属性的匹配,在匹配时,会先检查<intent-filter.../>里<data.../>的子元素:
如果目标组件的<data.../>子元素只指定了android:scheme属性,那么只要Intent的Data属性的scheme部分与android:scheme属性相同,就可以启动该组件。
如果目标组件<data.../>指定了android:scheme,android:host属性,则需要Intent的Data属性指定为具有相同的scheme,和host,则可以启动该组件。
<data.../>指定了android:scheme,android:host,android:port属性,那么Inent的Data属性要指定相同的scheme,host,port才可以启动该组件。
。。。。其余相同与上面类似,不一一列举。
data子元素在配置的时候是可选的,但又是相互依存的,比如,如果没有配置scheme,那么其他所有的Uri属性都被忽略;如果host没有配置,那么port以及path,pathPrefix,pathPattern都会被忽略(不起作用)。
如果希望<data.../>子元素正常起作用,至少要在<intent-filter.../>中配置一个<action.../>子元素,该子元素的android:name可任意定义。
下面附上官方API对于data的阐释:点击打开链接
content://com/android.contacts/contacts/1Uri对象满足如下格式:
scheme://host:port/path or pathPrefix or pathPattern(这里的是scheme而不是schema)
比如上面的Uri字符串,content就是scheme部分,com.android.contacts就是host部分,port就是端口,这里省略,contacts/1就是path部分。
在代码中进行定义的时候Data属性和Type属性会进行相互覆盖:
如果为intent先设置Type属性,然后设置Data属性,Type属性就会被Data属性所覆盖。
Intent intent = new Intent(); intent.setType("abc/bcd"); intent.setData(Uri.parse("http://www.baidu.com")); Toast.makeText(MainActivity.this, intent.toString(), Toast.LENGTH_LONG).show();
![](http://img.my.csdn.net/uploads/201308/23/1377240276_5224.jpg)
如果为intent先设置Data属性,然后设置Type属性,Data属性就会被Type属性所覆盖
Intent intent = new Intent(); intent.setData(Uri.parse("http://www.baidu.com")); intent.setType("abc/bcd"); Toast.makeText(MainActivity.this, intent.toString(), Toast.LENGTH_LONG).show();
![](http://img.my.csdn.net/uploads/201308/23/1377240276_9168.jpg)
那么,如果希望同时设置Intent的Data属性和Type属性,应调用Intent的setDataAndType()方法
Intent intent = new Intent(); intent.setDataAndType(Uri.parse("http://www.baidu.com"), "abc/bcdz"); Toast.makeText(MainActivity.this, intent.toString(), Toast.LENGTH_LONG).show();
![](http://img.my.csdn.net/uploads/201308/23/1377240279_4512.jpg)
AndroidManifest.xml中 data属性的具体格式如下:
<data android:mimeType="" android:scheme="" android:host="" android:port="" android:path="" android:pathPrefix="" android:pathPattern=""/>
mimeType:用来设置该Data所指定的Uri对应的MIME类型,可自定义,只要符合abc/def格式即可。声明该组件所能匹配的Intent的Type属性。
scheme:用来声明该组件所能匹配的Intent的Data属性的scheme部分。
host:用来声明该组件所能匹配的Intent的Data属性的host部分。
port:用来声明该组件所能匹配的Intent的Data属性的port部分。
path:用来声明该组件所能匹配的Intent的Data属性的path部分。
pathPrefix:用来声明该组件所能匹配的Intent的Data属性的path前缀。
pathPattern:用来声明该组件所能匹配的Intent的Data属性的path字符串模版。
启动组件时的要求:
Intent的Type属性也用于指定该Intent的要求,必须对应组件中<intent-filter.../>元素中<data.../>子元素的mimeType属性与此相同,才能启动该组件。
Data属性的匹配,在匹配时,会先检查<intent-filter.../>里<data.../>的子元素:
如果目标组件的<data.../>子元素只指定了android:scheme属性,那么只要Intent的Data属性的scheme部分与android:scheme属性相同,就可以启动该组件。
如果目标组件<data.../>指定了android:scheme,android:host属性,则需要Intent的Data属性指定为具有相同的scheme,和host,则可以启动该组件。
<data.../>指定了android:scheme,android:host,android:port属性,那么Inent的Data属性要指定相同的scheme,host,port才可以启动该组件。
。。。。其余相同与上面类似,不一一列举。
data子元素在配置的时候是可选的,但又是相互依存的,比如,如果没有配置scheme,那么其他所有的Uri属性都被忽略;如果host没有配置,那么port以及path,pathPrefix,pathPattern都会被忽略(不起作用)。
如果希望<data.../>子元素正常起作用,至少要在<intent-filter.../>中配置一个<action.../>子元素,该子元素的android:name可任意定义。
下面附上官方API对于data的阐释:点击打开链接
相关文章推荐
- Android中Data、Type属性与intent-filter配置
- Android讲义3---第五章---Data,Type属性与intent-filter配置
- android intent中的action data Category、Extras的重要属性
- Android开发学习笔记:Intent的简介以及属性的详解
- Android学习之 Manifest中meta-data扩展元素数据的配置与获取
- Intent的Component,Action和Category属性详解-android学习之旅(五十)
- Android开发学习笔记:Intent的简介以及属性的详解
- Android开发————Intent中的四个重要属性Action、Data、Category、Extras
- android基础学习之清单文件的meta-data属性
- Android开发学习笔记:Intent的简介以及属性的详解
- Intent的Component,Action和Category属性详解-android学习之旅(五十)
- Android开发学习笔记:Intent的简介以及属性的详解
- Android学习之 Manifest中meta-data扩展元素数据的配置与获取
- Android学习之 Manifest中meta-data扩展元素数据的配置与获取
- [Android基础]Intent用法的二三事(下)——Data、Type、Extra、Flag的属性详解
- Android开发学习笔记:Intent的简介以及属性的详解
- Intent的Component,Action和Category属性详解-android学习之旅(五十)
- Android开发学习笔记:Intent的简介以及属性的详解
- [学习总结]8、android 自定义控件 使用declare-styleable进行配置属性(源码角度)
- Android开发学习笔记:Intent的简介以及属性的详解