文档章节

Intent(意图)

 梦想家Peng
发布于 2016/03/01 14:42
字数 688
阅读 13
收藏 0

Intent的作用主要是激活系统组件,以及在系统组件之间传递数据。

Intent的核心属性:

1) ComponentName:组件名称

  ComponentName用于激活系统组件时,指定被激活的组件名称

2) Extra:附加数据

  Extra用于向Intent对象内部封装数据,当该Intent被用于激活组件时,被激活的组件就可以拿到该Intent,从而获取之前封装的数据。

  可以在Intent中直接封装的数据类型相对比较有限,大致包括:基本数据类型,基本数据类型的数组,基本数据类型的包装类的ArrayList,CharSequence,CharSequence的数组,ArrayList<String>,Parcelable接口的实现类,Parcelable接口的实现类的数组

3) Action:动作

  用于激活类名未知的系统组件(例如Activity、Service等)

  Action的值是String类型的数据,应该由被激活的组件的设计者提供

4) Data:数据

  该属性通常与Action同时使用,该属性的类型是Uri类型,Uri类型的数据可以通过Uri.parse(String)得到,并且,Uri类型的数据的字符串形态相对是固定的格式,例如"tel:10086"

5) Category:分类

  通常用于Intent与IntentFilter之间验证过滤,同一个Intent对象可以有多个Category属性值,每一个Intent对象将默认添加android.intent.category.DEFAULT这个Category属性

PS:Intent的属性还包括Type、Flag等。


显式意图与隐式意图

-------------------------------

显式意图,显式的指定了Intent的ComponentName属性,例如:new Intent(this, SecondActivity.class);

隐式意图,显式的指定了Intent的Action属性,例如:intent.setAction("android.intent.call");

以上2种意图是冲突的,当使用显式意图时,隐藏意图的相关配置是无效的

PS:隐式意图可以实现跨进程激活组件,而显式意图只能激活自身应用程序的组件


IntentFilter(意图过滤器)

-------------------------------

IntentFilter是对Intent进行过滤的工具,只有匹配的Intent才认为是许可的,则许可的Intent可以激活配置了该IntentFilter的组件。

如果某个Activity需要设置为可以被隐式意图激活,则需要在AndroidManifest.xml的对应的Activity节点下配置<intent-filter>节点,并在<intent-filter>节点下至少添加1个<action>节点和1个<category>节点,其中,<action>节点中的name属性值可以自由定义,将表现为激活当前Activity时需要指定的Intent的Action属性值,<category>节点的name属性值必须是"android.intent.category.DEFAULT"。

IntentFilter的过滤规则:IntentFilter中配置的Action和Category属性,比需要进行匹配验证的Intent中的同样的属性,只能多,不能少。


例子:

打电话:

Intent it = new Intent();
			it.setAction(Intent.ACTION_DIAL);
			it.setData(Uri.parse("tel:10086"));
			startActivity(it);

© 著作权归作者所有

粉丝 0
博文 34
码字总数 15605
作品 0
深圳
私信 提问
【转】Android深入探究笔记之三 -- Intent (隐式意图和显示意图)

Intent Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) , Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递 Intent 来执行动作...

rotiwen
2011/12/21
0
0
Intent(意图)

Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件...

长平狐
2012/10/09
197
0
Android中隐式意图(Intent)用法

Intent对象在Android应用开发中起到很大的作用,例如激活组件(Activity,Service 等组件)或者携带数据的功能,相信大家在开发中经常会用到这些功能,Android中的意图分为显式意图和隐式意图...

程序袁_绪龙
2015/01/14
0
0
使用内置的Camera应用程序捕获图像

随着移动电话迅速成为移动计算机,它们在许多方面已经取代了各种各样的消费类电子产品。最早添加到移动电话上且和电话无关的硬件功能之一是摄像头。现在,似乎很难想象有人会购买一部不包含摄...

我叫leo-
2016/04/19
40
0
java.lang.IllegalArgumentException: Service Inten

java.lang.IllegalArgumentException: Service Intent must be explicit: Intent 异常是说必须明确的指出 intent 即android 5.0 之后不能载用隐式意图操作service 而应该是用显式的意图操作s...

Angels_安杰
2016/02/24
38
0

没有更多内容

加载失败,请刷新页面

加载更多

一个简单易用的Linux文本编辑器:nano的安装与使用

许多状况下咱们都必要编纂云主机里的文本情节,而现时用的比力多的文本编纂器是vim,这个估量许多人都以为很难用,这边伏笔VPS引荐一个简略易用的文本编纂器nano,比vim简略许多,很轻易上手...

shzwork
29分钟前
3
0
go recover

异常、错误常见语言处理 一般语言都有其错误处理方式,就以鄙人熟悉的php来距离吧。 PHP有多个级别的错误处理方式,以防止程序在还未正确执行完毕时,就造成了程序的提前结束。 try/catch/fi...

o0无忧亦无怖
47分钟前
1
0
玩转混合云+边缘计算,且看ZStack Mini!

文章导读:2019年4月16日,ZStack新品和合作伙伴战略发布会上,面向集团客户和边缘场景需求,ZStack重磅推出ZStack Mini超融合一体机(以下简称:ZStack Mini)和ZStack多云管理平台(以下简...

ZStack社区版
49分钟前
2
0
springboot 整合redis

springboot整合redis官方是有文档的: 英文看不懂可以翻译,代码应该看得懂, 这个是自动注入的。当然也可以xml注入,手动配置。 整合步骤: pom文件: <!-- spring boot web --> ...

jason_kiss
52分钟前
2
0
手机耗电问题,大部分是没有正确使用这个“锁”

当安卓设备闲置时,设备很快会进入休眠状态,以达到省电和减少CPU占用的目的。但有些应用在手机灭屏甚至系统休眠时,依然频繁占用CPU处理事件或唤醒屏幕提示用户消息,这类行为会导致手机耗电...

安卓绿色联盟
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部