Intent与Intent Filter(下)

http://blog.csdn.net/dawanganban/article/details/19284147

接着上一篇的内容,下面我们再来看看Intent的Data与Type属性。

一、Data属性与Type属性

Data属性通常用于向Action属性 提供操作的数据,Data属性接受一个Uri对象

格式:scheme://host:port/path

例如:

content://com.android.contacts/contacts/1

tel:123

其中prot部分被省略了,contacts/1是path部分。

Type属性用于指定该Data所指定Uri所对应的MIME类型,这种MIME类型可以是自定义的,但是要符合abc/xyz格式。

二、Data属性与Type属性之间的关系

Type属性和Data同时出现会出现覆盖现象,如果要同时设置要使用setDataAndType()方法,举例如下:

  1. //Type属性被Data覆盖  
  2. public void overrideType(View source){  
  3.     Intent intent = new Intent();  
  4.     intent.setType("abc/xyz");  
  5.     intent.setData(Uri.parse("lee://www.baidu.com:80/test"));  
  6. }  
  7. //Data属性被Type覆盖  
  8. public void overrideData(View source){  
  9.     Intent intent = new Intent();  
  10.     intent.setData(Uri.parse("lee://www.baidu.com:80/test"));  
  11.     intent.setType("abc/xyz");  
  12. }  
  13. //同时设置Data和Type  
  14. public void dataAndType(View source){  
  15.     Intent intent = new Intent();  
  16.     intent.setDataAndType(  
  17.             Uri.parse("lee://www.baidu.com:80/test"), "abc/xyz");  
  18. }     
在manifest配置文件中配置Activity的方法如下

  1. <intent-filter>  
  2.     <action android:name="android.intent.action.MAIN" />  
  3.   
  4.     <category android:name="android.intent.category.LAUNCHER" />  
  5.     <data   
  6.         android:mimeType=""  <!-- Type属性 -->  
  7.         android:scheme=""   <!-- scheme部分 -->  
  8.         android:host=""     <!-- host部分 -->  
  9.         android:port=""     <!-- port部分 -->  
  10.         android:path=""     <!-- path部分 -->  
  11.         android:pathPrefix=""   <!-- path前缀 -->  
  12.         android:pathPattern=""/>    <!-- path模版 -->  
  13. </intent-filter>  

三、Data属性与Type属性的匹配方式

Type属性也是用户指定组件匹配的组件,Type是需要严格匹配的。

Data属性则不需要严格匹配,过程如下:

如果指定了android:scheme属性,那么只要Intent的Data属性的scheme部分与android:scheme属性相同就可以启动该组件。

如果制定了android:scheme属性和android:host需要两个属性与Intent的Data部分的该部分相同则启动该组件。

如果定制了android:scheme、android:host、android:port属性则需要与该部分相同才能启动该组件。

...................

四、小练习

  1. Intent intent = new Intent();  
  2. String data = "http://blog.csdn.net/dawanganban";  
  3. Uri uri = Uri.parse(data);  
  4. intent.setAction(Intent.ACTION_VIEW);  
  5. intent.setData(uri);  
  6. startActivity(intent);  

  1. Intent intent = new Intent();  
  2. String data = "content://com.android.contacts/contacts/1";  
  3. Uri uri = Uri.parse(data);  
  4. intent.setData(uri);  
  5. startActivity(intent);  

  1. Intent intent = new Intent();  
  2. String data = "tel:10000";  
  3. Uri uri = Uri.parse(data);  
  4. intent.setData(uri);  
  5. startActivity(intent);  

五、Intent的其他属性

Extra属性:用于在多个Activity之间传递数据,该属性其实是一个Bundle对象,后面在Activity间传值的文章中将会介绍。

Flag属性:一些额外的控制旗标,在后面将会详细介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值