- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第五章电话和短信应用程序开发;5.1Intent
;1.Action
Action是指Intent要实施的动作,是一个字符串常量。如果指明了一个Action,执行者就会依照这个动作的指示,接受相关输入,表现对应行为,产生符合条件的输出。
在Intent类中,定义了大量的Action常量属性,标准的ActivityActions如表5.1所示。
表5.1标准的ActivityActions
;表5.1标准的ActivityActions续
2.Data
Intent的Data属性是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定。例如,通讯录中identifier为1联系人的信息(一般以U形式被描述),给这个人打电话的的语句为:
ACTION_VIEWcontent://contacts/1
ACTION_DIALcontent://contacts/1;3.Category
Intent中的Category属性起着对Action补充说明的作用。通过Action,配合Data或Type可以准确表达出一个完整的意图(加一些约束会更精准)。Intent中的Category属性是一个执行Action的附加信息。例如,CATEGORY_LAUNCHER表示加载程序时Activity出现在最上面;_HOME表示回到Home界面。
4.Type
Intent的Type属性显示指定Intent的数据类型(MIME)。通常Intent的数据类型可以从Data自身判断出来,但是一旦指定了Type类型,就会强制使用Type指定的类型而不再进行推导。
5.Component
Intent的Compotent属性指定Intent的目标组件的类名称。通常情况下,Android会根据Intent中包含的其他属性的信息进行查找,比如用Action、Data、Type、Category去描述一个请求,这种模式称为ImplicitIntents。通过这种模式,提供一种灵活可扩展的模式,给用户和第三方应用一个选择权。例如,一个邮箱软件,大部分功能都不错,但是选择图片的功能不尽人意,如果采用ImplicitIntents,那么它就是一个开放的体系,如果想用手机中的其他图片代替邮箱中默认的,可以完成这一功能。但该模式需要付出性能上的开销,因为毕竟存在一个检索过程。于是Android提供了另一种模式ExplicitIntents,该模式需要component对象。Component就是完整的类名,形如com.xxxxx.xxxx,一旦指明就可以直接调用。根据该属性是否被指定,Intent可分为显式Intent和隐式Intent。
;6.Extra
Intent的Extra属性是添加一些组件的附加信息。比如,要通过一个Activity执行“发送电子邮件”这个动作请求,可以将电子邮件的subject、body等保存在extras里,传给电子邮件发送组件。
5.1.1显式Intent和隐式Intent
Intent寻找目标组件的方式分为两种:显式Intent和隐式Intent。
显式Intent是通过指定Intent组件名称来实现的,它一般用在源组件已知目标组件名称的前提下,这种方式一般在应用程序内部实现。比如在某应用程序内,一个Activity启动一个Service。
在不同应用程序之间,在不知道目标组件名称的情况下,寻找目标组件需要使用隐式Intent。这种方式是通过IntentFilter实现的。
;5.1.2IntentFilter
为了支持隐式Intent,可以声明一个甚至多个IntentFilter。每个IntentFilter描述组件所能响应Intent请求的能力。比如请求网页浏览器,网页浏览器程序的IntentFliter就应该声明它所希望接收的IntentFilterAction是WEB_SEARCH_ACTION,以及与之相关的请求数据是网页地址URI格式。
如何为组件声明自己的IntentFilter?常见的方法是在AndroidManifest.xml文件中用属性Intent-Filter描述组件的IntentFilter。
一个隐式Intent请求要能够传递目标组件,必要通过Action、Data以及Category这三个方面的检查。如果任何一方面不匹配,Android都不会将该隐式Intent传递给目标组件。接下来我们讲解这三方面检查的具体规则。
1.动作测试
intent-Filter元素中可以包含子元素action,比如:
intent-Filter
actionandroid:name=“ject.SHOW-CURRENT”
您可能关注的文档
- 她不觉得好笑语言要点共个样品课件nce2 lesson63.pdf
- 新天钢集团副总裁刘国旗:在十一月份行政例会上的讲话.docx
- 新天钢集团总经理徐灯亮:在10月份行政例会上的讲话有重名 950797.docx
- 新天钢集团副总裁刘国旗在四月份行政例会上的讲话.docx
- 新天钢集团总经理徐灯亮:在10月份行政例会上的讲话.docx
- 在北京市润丰学校2022-2023学年度第二学期开学典礼上的讲话.docx
- 虚拟现实技术促进高校思想政治理论课教学质量提升研究--以X大学为例.pdf
- 行政赔偿中财产权实际损失的司法认定.pdf
- 财税支持政策对光伏企业市场价值的影响研究--基于事件研究法.pdf
- 非高管股权激励对企业绩效影响研究.pdf
文档评论(0)