android应用程序的三大组件——Activities、Services、Broadcast Receiver,通过消息触发,这个消息就是Intent,中文又翻译为"意图"(我感觉读着不顺畅,还是读英文)。我们能够通过Intent去启动三大组件,而且通过Intent携带数据到其它组件中。本文来看一下怎么使用Intent启动组件,以及Intent的过滤规则。

Intent对象

首先来看Intent对象中包括的成员。

private String mAction;   //动作
private Uri mData; //数据
private String mType;
private String mPackage; //包名
private ComponentName mComponent; //组件名 包括程序包名+类名,以及应用包名
private int mFlags; //标志
private HashSet<String> mCategories; //种类
private Bundle mExtras; //附加信息
private Rect mSourceBounds;
private Intent mSelector;
private ClipData mClipData;

看Intent的源代码,主要包括以上成员。

Intent解析

Intent解析有两种方式:显式解析和隐式解析。

显式解析。我们直接传组件进入。打开这个指定的组件,比較简单,通常应用程序内使用。

比方我们创建一个显式的Intent:

Intent intent = new Intent(context, OtherActivity.class);

隐式解析,没有指定详细的组件,通过规则去匹配组件。通经常使用于多个程序之间的互相调用比較多。我们使用隐式解析式。action、data(包含URI和数据类型)、category都必须有。比方我们启动浏览器去打开一个网址,intent能够这样创建:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://blog.isming.me"));

上面没有填写category,创建Intent的时候会自己主动填写为default。

等待补充吧。

乱扯

好吧,本来像。会写的非常长的,可是真正想写的时候,发现就这么简单。也没什么好写的。下次多看看源代码。再看有没有要补充的。就酱紫了!

原文地址:http://blog.isming.me/blog/2014/06/15/use-intent-start-component/。欢迎转载,转载请注明出处。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

使用Intent启动组件的更多相关文章

  1. Intent对象详解——使用Intent启动系统组件

    Android的应用程序包含三种重要组件:Activity.Service.BroadcastReceiver,应用程序采用一致的方式来启动它们——都是依靠Intent来启动的,Intent就封装了程 ...

  2. Android启动组件的三种主流及若干非主流方式

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处 启动组件的一些方式,今天做一个简要的总结 Service:通过startService()启动,或者写 ...

  3. Intent进行组件通信的一些体会

    Intent进行组件通信的原理 l  Intent协助应用间的交互与通讯 Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述.Android则根据此Intent的描述,负责找到对应 ...

  4. Android开发之通过Intent启动系统应用的协议

    使用隐式Intent启动系统应用,除了http协议,还有geo(显示地理位置),tel(拨打电话),file(文件)等

  5. Android(java)学习笔记131:Intent启动别的Activity

    1.案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" encoding="utf-8 ...

  6. Android - 通过Intent启动Activity

    通过Intent启动Activity 本文地址: http://blog.csdn.net/caroline_wendy 为了动态关联Activity界面,使用Intent启动.能够灵活绑定. 在In ...

  7. 通过intent启动Activity

    android应用程序内部通过Intent来实现Activity间的跳转.也知道通过Intent调用系统程序.但若想在应用程序A内开启应用程序B(前提是A.B均已安装),该如何去实现? 记录下实现过程 ...

  8. intent 启动activity、service的方法

    1.通过intent启动service. 通过传递一个Intent对象至Context.startService()将启动一个服务(或给予正在运行的服务以一个新的指令).Android调用服务的onS ...

  9. Android(java)学习笔记73:Intent启动Activity

    1. Intent启动Activity案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" enc ...

随机推荐

  1. EasyUI DataGrid 中字段 formatter 格式化不起作用

    今天用 EasyUI datagrid 来做列表,要对一些数据进行格式化,推断某字段状态时,发现 formatter 格式化相应的函数不起作用. <table id="list_dat ...

  2. biz处理dao事务处理层

    前言 正文 1.创建一个事物管理对象,该对象将连接对象绑定到当前线程 2.dao层的代码演示样例 3.biz层处理数据库的事务 总结

  3. NYOJ 1066 CO-PRIME(数论)

    CO-PRIME 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 This problem is so easy! Can you solve it? You are ...

  4. ZOJ 2679 Old Bill(数学)

    主题链接:problemCode=2679" target="_blank">http://acm.zju.edu.cn/onlinejudge/showProbl ...

  5. NTP工作机制及时间同步的方法

    Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它能够使计算机对其server或时钟源做同步化,它能够提供高精准度的时间校正,且可用加密确认的方式来防止恶毒的协 ...

  6. HDOJ 2442 -bricks 状态压缩DP 一直TLE.打表过的..

    有5个砖块..加上一个空着不放..那么有6种状态..所以很明显的可以用6进制的状态DP... 不过这么做..我觉得我已经能优化的都优化了...还是超时..一看数据范围是100*6..打表先AC了.. ...

  7. Python IDLE 快捷键

    Python IDLE  快捷键 编辑状态时: Ctrl + [ .Ctrl + ] 缩进代码 Alt+3 Alt+4 注释.取消注释代码行 Alt+5 Alt+6 切换缩进方式 空格<=> ...

  8. XP下的进程静音技术(遍历进程,遍历输入模块,遍历输入函数,找到函数并HOOK) good

    很多浏览器有这种功能,实现原理都是一样.发声源基本都来自Flash,比如Flash游戏啦,视频播放器啦等等 而Flash的发声都是通过winmm.dll::waveOutWrite函数来完成,所以,我 ...

  9. JDWP

    JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用 ...

  10. c++ try throw catch

    c++ try throw catch 这三者联合使用 , try { statement list; } catch( typeA arg ) { statement list; } catch( ...