原文:[置顶] Android菜鸟的成长笔记(9)——Intent与Intent Filter(下)

接着上一篇的内容,下面我们再来看看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()方法,举例如下:

	//Type属性被Data覆盖
public void overrideType(View source){
Intent intent = new Intent();
intent.setType("abc/xyz");
intent.setData(Uri.parse("lee://www.baidu.com:80/test"));
}
//Data属性被Type覆盖
public void overrideData(View source){
Intent intent = new Intent();
intent.setData(Uri.parse("lee://www.baidu.com:80/test"));
intent.setType("abc/xyz");
}
//同时设置Data和Type
public void dataAndType(View source){
Intent intent = new Intent();
intent.setDataAndType(
Uri.parse("lee://www.baidu.com:80/test"), "abc/xyz");
}

在manifest配置文件中配置Activity的方法如下

            <intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
<data
android:mimeType="" <!-- Type属性 -->
android:scheme="" <!-- scheme部分 -->
android:host="" <!-- host部分 -->
android:port="" <!-- port部分 -->
android:path="" <!-- path部分 -->
android:pathPrefix="" <!-- path前缀 -->
android:pathPattern=""/> <!-- path模版 -->
</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属性则需要与该部分相同才能启动该组件。

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

四、小练习

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

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

Intent intent = new Intent();
String data = "tel:10000";
Uri uri = Uri.parse(data);
intent.setData(uri);
startActivity(intent);

五、Intent的其他属性

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

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

Android菜鸟的成长笔记(9)——Intent与Intent Filter(下)的更多相关文章

  1. Android菜鸟的成长笔记(8)——Intent与Intent Filter(上)

    原文:[置顶] Android菜鸟的成长笔记(8)——Intent与Intent Filter(上) Intent代表了Android应用的启动“意图”,Android应用将会根据Intent来启动指 ...

  2. Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值

    原文:[置顶] Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值 前面我们了解了如何启动一个Activity,一个Activity在启动另外一个Activity的时候 ...

  3. Android菜鸟的成长笔记(7)——什么是Activity

    原文:[置顶] Android菜鸟的成长笔记(7)——什么是Activity 前面我们做了一个小例子,在分析代码的时候我们提到了Activity,那么什么是Activity呢? Activity是An ...

  4. Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme

    原文:Android菜鸟的成长笔记(6)--剖析源码学自定义主题Theme 还记得在Android菜鸟的成长笔记(3)中我们曾经遇到了一个问题吗?"这个界面和真真的QQ界面还有点不同的就是上 ...

  5. Android菜鸟的成长笔记(17)—— 再看Android中的Unbounded Service

    原文:Android菜鸟的成长笔记(17)-- 再看Android中的Unbounded Service 前面已经写过关于startService(Unbounded Service)的一篇文章:&l ...

  6. Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy

    原文:Android菜鸟的成长笔记(3)--给QQ登录界面说So Easy 上一篇:Android菜鸟的成长笔记(2)--第一个Android应用 我们前面已经做了第一个Android应用程序,虽然有 ...

  7. Android菜鸟的成长笔记(2)——第一个Android应用

    原文:Android菜鸟的成长笔记(2)--第一个Android应用 上一篇:Android菜鸟的成长笔记(1)--Anddroid环境搭建从入门到精通 在上一篇Android菜鸟的成长笔记(1)中我 ...

  8. Android菜鸟的成长笔记(1)——Android开发环境搭建从入门到精通

    原文:Android菜鸟的成长笔记(1)--Android开发环境搭建从入门到精通 今天在博客中看到好多Android的初学者对Android的开发环境的搭建不熟悉而导致不能进行学习,所以我决定自己写 ...

  9. Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上)

    原文:[置顶] Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上) 我们在用手机的时候可能会发现,即使应用被放到后台再返回到前台数据依然保留(比如说我们正在玩游戏,突然电话 ...

随机推荐

  1. Bad Hair Day(单调栈 )

    Bad Hair Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15941   Accepted: 5382 Des ...

  2. DH11数字温湿度传感器

    DH11数字温湿度传感器是一种集温度.湿度一体的复合传感器,它能把温度和湿度物理量通过温.湿度敏感元件和相应电路转化成方便计算机.PLC.智能仪表等数据采集设备直接读取的数字量.DHT11由电阻式感湿 ...

  3. 14 - XML、JSON、PLIST对比和APP生命周期

    XML中间的 数据表达/传输数据的语言 优点:特别强大 强大到很多平台都有基于XML的独立语言,如MXML.HTML 缺点:传输小型数据时,特别啰嗦 size / speed = time JSON ...

  4. 06-OC分类、协议、ARC

    目录: 一.分类 二.扩展 三.协议 四.内存管理ARC 回到顶部 一.分类 1 分类就是类的补充和扩展,本质上是类的一部分,把一个类分成若干部分,每个部分就是分类. 2 语法 * 文件中的语法@in ...

  5. js判断IP js判断域名

    <html> <head> <script language="javascript" type="text/javascript" ...

  6. 自定义类似QMutexLocker的CMutexLocker

    最近做项目遇到一个需求,有一个buttonSlot()执行要耗点时间,为了防止用户无限制的乱点出现问题,考虑加一个互斥锁,使得每次执行完后才允许执行下一次.大概意思是: //QMutex  m_mut ...

  7. Android学习笔记:Activity生命周期详解

    进行android的开发,必须深入了解Activity的生命周期.而对这个讲述最权威.最好的莫过于google的开发文档了. 本文的讲述主要是对 http://developer.android.co ...

  8. Java 使用JDBC、DBCP、C3P0访问数据库

    JDBC: Connection conn = null; Statement stmt = null; ResultSet rs = null; // 1.加载驱动 try { Class.forN ...

  9. STL--G - For Fans of Statistics(两个推断条件-二分)

    G - For Fans of Statistics Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & ...

  10. ClassLoader载入指定的类需注意六个细节或报ClassNotFundEception异常总结

    项目中,载入指定的类反射调用方法一直报类找不到,经过数百次的測试.对这样的问题有了一个又一次的认识,特总结.记录.分享例如以下: 1.路径中尽可能用"/"或者File.separa ...