使用Intent启动组件
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启动组件的更多相关文章
- Intent对象详解——使用Intent启动系统组件
Android的应用程序包含三种重要组件:Activity.Service.BroadcastReceiver,应用程序采用一致的方式来启动它们——都是依靠Intent来启动的,Intent就封装了程 ...
- Android启动组件的三种主流及若干非主流方式
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处 启动组件的一些方式,今天做一个简要的总结 Service:通过startService()启动,或者写 ...
- Intent进行组件通信的一些体会
Intent进行组件通信的原理 l Intent协助应用间的交互与通讯 Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述.Android则根据此Intent的描述,负责找到对应 ...
- Android开发之通过Intent启动系统应用的协议
使用隐式Intent启动系统应用,除了http协议,还有geo(显示地理位置),tel(拨打电话),file(文件)等
- Android(java)学习笔记131:Intent启动别的Activity
1.案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" encoding="utf-8 ...
- Android - 通过Intent启动Activity
通过Intent启动Activity 本文地址: http://blog.csdn.net/caroline_wendy 为了动态关联Activity界面,使用Intent启动.能够灵活绑定. 在In ...
- 通过intent启动Activity
android应用程序内部通过Intent来实现Activity间的跳转.也知道通过Intent调用系统程序.但若想在应用程序A内开启应用程序B(前提是A.B均已安装),该如何去实现? 记录下实现过程 ...
- intent 启动activity、service的方法
1.通过intent启动service. 通过传递一个Intent对象至Context.startService()将启动一个服务(或给予正在运行的服务以一个新的指令).Android调用服务的onS ...
- Android(java)学习笔记73:Intent启动Activity
1. Intent启动Activity案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" enc ...
随机推荐
- LPCTSTR
LPCTSTR类型: L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容 ...
- TCanvas.CopyRect方法中参数CopyMode的意义
首先看可能取值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cmBlackness = BLACKNESS; cmDstInvert = DSTINVERT; cmMer ...
- 微软HR泄露的asp.net面试题
1.面向对象的思想主要包括什么? 2.什么是ASP.net中的用户控件? 3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载? 4.列举一下你所了解的XML技术及 ...
- Mac 终端提示You have not agreed to the Xcode license agreements
在mac 终端运行命令的时候会被提示没有同意xcode 证书 ,这个时候需要在Terminal中同意license 打开终端输入xcodebuild -license,会看到一大堆的license说明 ...
- Linux系统管理员必备的监控工具(88款)
随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...
- js传真实地址 C:\fakepath
js给action传真是地址的时候,处于安全,传到action中 浏览器会改变路径变为C:\fakepath\ftp.txt,但是原始路径却是 C:\Documents and Settings\Ad ...
- Hibernate获取Connection
package com.trendcom.base.util; import java.sql.Connection; import java.sql.SQLException; import jav ...
- Oracle 验证IOT表数据存储在主键里
iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...
- linux 下opensplice的简易安装
http://www.prismtech.com/opensplice/opensplice-dds-community/software-downloads 下载对应我选择的是: OpenSplic ...
- iOS学习笔记(十五)——数据库操作(SQLite)
SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的 ...