文档章节

[Android] Intent对象

枫兮兮
 枫兮兮
发布于 2014/02/27 17:48
字数 1160
阅读 150
收藏 8

Intent对象-Intent Objects

Intent本 身是一个消息的集合。他包含那些传递给接收Intent的组件的信息(such as the action to be taken and the data to act on)和传递给Android系统的信息(例如应该绑定到Intent上的组件的类别和如何启动目标activity的指南)主要的,他包含了以下几点:

组件名-Component name

组件的名字是应该可以处理Intent,为其指明目标的。这一段所描述的就是关于ComponentName的--他是目标组件的类名的联合体(例如"com.example.project")。组件名字中所包含的包名的部分不需要必须与manifest文件中的包名相匹配。

组件的名字是非强制性的。如果他是固定的,那么Intent就会被传递给指定名字的类的实例,如果他不是固定的,那么Android就会通过 Intent中的其他信息找到合适的目标--可以查看本文档以后的提到的#Intent解决方法-Intent Resolution|Intent解决方法-Intent Resolution。

组件名字可以通过setComponent(), setClass()setClassName()来设置,通过getComponent()来读取。

动作-Action

一个字符串命名了将要被执行的动作,或在广播intents事件中,已经发生并被报告的动作。Intent类定义了许多动作常量,包括如下:

1.jpg

你可以访问Intent|Intent类的定义查看一系列的代表一般行为动作的常量。其余行为动作的定义可以在Android API文档中的其他地方找到。你也可以在应用中自定义这样的常量串,这些常量要以包名作为前缀,例如"com.example.project.SHOW_COLOR".

action的名字能够很好的说明intent有着怎样的机构--特别是#数据-Data|数据-Data和#Extras|Extras--就像 方法的名字决定了参数和返回值。所以,使用一个明确的action的名字是一个很好的主意。另外,要为你的Intent定义一个完整的协议,而不是孤立的 定义action。

我们用setAction()来设置Intent中的action并用getAction()来读取。

数据-Data

数据运行的URI和其MIME类型。不同的action被配与不同的data说明。例如,如果是ACTION_CALL,那么他的data就是号码的URI--ACTION_VIEW 并且data是http: URI,那么接收Intent的activity将下载并显示URI所指向的内容。

当为某个组件匹配一个可以处理数据的Intent的时候,通常除了要了解Data的URI以外,重要的是要知道Data的类型(MIME type)。例如,一个可以展示图片的组件不应该被调用来播放音频。

在很多情况下,Data的类型可以从URI中推测出来,特别是URI所展示的内容:指出了Data被用在什么位置及被哪种content provider控制(参考separate discussion on content providers)。但是Data的类型也可以在Intent中明确的设定。setData()方法设置Data的URI,setType()设置Data的类型(MIME type),setDataAndType()两者一起设置,getData()读取URI,getType()读取类型

分类-Category

Category是这样一个String:他包含了需要处理Intent的组件的种类的信息。很多Category的描述能够放在Intent里。就像Action那样,Intent也定义了一些Category常量,如下图表

2.jpg

参考Intent可以查看全部Category的列表

addCategory()方法可以把一个Category放入到Intent中,removeCategory()可以删除之前加入的Category,getCategories()可以得到目前在Intent中所有的Category

Extras

Extras是传递给目标组件的键值对信息。就像一些action匹配着特别的data uri,一些action匹配着特别的Extras。例如"time-zone"指示新时区的信息,"state"标识耳机设备是否插好的信息,除此还有SHOW_COLOR的action,颜色值将被设置在一个键-值对信息中。

Intent有一系列的get..()方法来取出数值。这些方法相对应的存在于Bundle类中。事实上,Extras也可以使用putExtras()getExtras()来操作数据。

标志位-Flags

::Flags有着很多种类。很多用来通知Android System如何运行一个activity(例如某个activity应该属于哪个任务)和运行以后如何处理(例如,flag是否属于当前活动activity)。所有这些flag都是在Intent中定义的。

Android system 和平台本身的应用会使用Intent发送系统本身的广播并且激活系统定义的组件。如何构造一个Intent并且激活一个系统组件,请参考list of intents


© 著作权归作者所有

枫兮兮
粉丝 14
博文 72
码字总数 27211
作品 0
成都
私信 提问
Android Intents和Intent过滤器(一)

Android应用程序有三个核心组件---Activity、Service、Broadcast Receiver,Broadcast receiver是通过叫做Intent的消息来激活的。Intent消息是同一个应用程序或不同应用程序运行后,组件间进...

长平狐
2012/10/16
120
0
Android中Intent组件详解

Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件。Intent 本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动...

Remix_jx
2014/10/16
0
0
如何改变Activity在当前任务堆栈中的顺序

本示例演示如何通过设置Intent对象的标记,来改变当前任务堆栈中既存的Activity的顺序。 1. Intent对象的Activity启动标记说明: FLAG_ACTIVITY_BROUGHT_TO_FRONT: 应用程序代码中通常不设置...

长平狐
2012/10/16
1K
0
Android SDK Document 框架导读的翻译和注解[6]——Activating components: intents【用Intent激活组件】

Activating components: intents【组件激活】 这里提到的Intent,类似于Content Provider,也是用户消息传递的, 但两者存在区别: 当一个从ContentResolver的请求的目标是Content Provider时,...

晨曦之光
2012/03/09
76
0
Android SDK Document 框架导读的翻译和注解[6]——Activating components: intents【用Intent激活组件】

Activating components: intents【组件激活】 这里提到的Intent,类似于Content Provider,也是用户消息传递的, 但两者存在区别: 当一个从ContentResolver的请求的目标是Content Provider时,...

晨曦之光
2012/03/07
139
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件34-磁盘容量统计

一、前言 磁盘容量统计控件,说白了,就是用来统计本地盘符占用的容量,包括但不限于已用空间、剩余空间、总大小、已用百分比等,其中对应的百分比采用进度条显示,该进度条的前景色和背景色...

飞扬青云
30分钟前
2
0
tensorflow 安装

https://github.com/tensorflow/tensorflow/releases/tag/v1.14.0 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=......

mbzhong
32分钟前
1
0
Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) What Is XSS? Cross-site scripting (XSS) is a type of web application vulnerability that enables the attackers to inject client-side script into web pa......

两广总督bogang
35分钟前
1
0
Java - IO框架

1个字节(byte)由8bit组成 GB2312或GBK编码:1个英文字母1字节,1个汉字2字节 UTF-8编码:1个英文字母1字节,1个汉字3-4字节 UTF-16编码:1个英文字母2字节,1个汉字3-4字节(Unicode扩展区的一...

丰田破产标志
44分钟前
1
0
龙芯电脑安装debian 10

下载安装器 由于debian的内核不能直接使用,因此我们只需要下载initrd.gz和boot.cfg即可。 https://mirrors.tuna.tsinghua.edu.cn/debian/dists/buster/main/installer-mips64el/current/ima...

gugudu
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部