电话短信应用程序开发.pptx

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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”

您可能关注的文档

文档评论(0)

183****7931 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档