(Android程序设计及实践)第4章意图Intent

上传人:au****y 文档编号:118806499 上传时间:2019-12-25 格式:PPT 页数:32 大小:1.83MB
返回 下载 相关 举报
(Android程序设计及实践)第4章意图Intent_第1页
第1页 / 共32页
(Android程序设计及实践)第4章意图Intent_第2页
第2页 / 共32页
(Android程序设计及实践)第4章意图Intent_第3页
第3页 / 共32页
(Android程序设计及实践)第4章意图Intent_第4页
第4页 / 共32页
(Android程序设计及实践)第4章意图Intent_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《(Android程序设计及实践)第4章意图Intent》由会员分享,可在线阅读,更多相关《(Android程序设计及实践)第4章意图Intent(32页珍藏版)》请在金锄头文库上搜索。

1、第 4 章 意图Intent 了解Intent的功能及作用 掌握Intent常用的属性及方法 熟悉Activity之间的消息传递机制 了解广播接收Intent 了解Intent的实现策略许可 本章目标 - 2 - 组组成属性设设置属性方法获获取属性方法 动作ActionsetAction()getAction() 数据DatasetData()getData() 分类CategoryaddCategory()getCategories() 类型TypesetType()getType() 组件Component setComponent() setClass() setClassName()

2、getComponent() 扩展信息ExtraputExtra() getXXXExtra()获取不同数据类型的数据,如int类型则使 用getIntExtra(),字符串则使用getStringExtra() getExtras()获取Bundle包 Intent概述 Intent是Android的核心组件,利用消息实现应用程序间的交互机制,这 种消息描述了应用中一次操作的动作、数据以及附加数据,系统通过该 Intent的描述负责找到对应的组件,并将Intent传递给调用的组件,完成 组件的调用。 Intent由动作、数据、分类、类型、组件和扩展信息等内容组成,每个组 成都由相应的属性进行

3、表示,并提供设置和获取相应属性的方法。 - 3 - Action属性 Action属性用于描述Intent要完成的动作,对要执行的动作进行一个简 要描述。Intent类定义了一系列Action属性常量,用来标识一套标准动 作,如ACTION_CALL(打电话)、ACTION_EDIT(编辑)等。 Action属性常量 Action常量行为为描述使用组组件(分类类) ACTION_CALL打电话 ,即直接呼叫Data中所带电话 号码 Activity ACTION_ANSWER接听来电 ACTION_SEND由用户指定发送方式进行数据发送操作 ACTION_SENDTO根据不同的Data类型,通

4、过对应 的软件发送数据 ACTION_VIEW根据不同的Data类型,通过对应 的软件显示数据 ACTION_EDIT显示可编辑 的数据 ACTION_MAIN应用程序的入口 ACTION_SYNC 同步服务器与移动设备 之间的数据 ACTION_BATTERY_LOW警告设备电 量低 Broadcast ACTION_HEADSET_PLUG插入或者拔出耳机 ACTION_SCREEN_ON打开移动设备 屏幕 ACTION_TIMEZONE_CHANGED移动设备时 区发生变化 - 4 - Data属性 Intent的Data属性是执行动作的URI和MIME类型 Data属性常量 Actio

5、n和Data一般匹配使用,不同的Action由不同的Data数据指定 Data属性说说明示例 tel:/号码数据格式,后跟电话 号码tel:/123 mailto:/邮件数据格式,后跟邮件收件人地址mailto:/dh smsto:/短息数据格式,后跟短信接收号码smsto:/123 content:/内容数据格式,后跟需要读取的内容content:/contacts/people/1 file:/文件数据格式,后跟文件路径file:/sdcard/mymusic.mp3 geo:/latitude,longitude经纬 数据格式,在地图上显示经纬 度所指定的位置geo:/180,65 Ac

6、tion属性Data属性描述 ACTION_VIEWcontent:/contacts/people/1显示_id为1的联系人信息 ACTION_EDITcontent:/contacts/people/1编辑 _id为1的联系人信息 ACTION_VIEWtel:123显示电话为 123的联系人信息 ACTION_VIEW在浏览 器中浏览该 网页 ACTION_VIEWfile:/sdcard/mymusic.mp3播放MP3 - 5 - Category属性 Category属性指明一个执行Action的分类 Intent中定义了一系列Category属性常量 Category属性说说明

7、CATEGORY_DEFAULT默认的执行方式,按照普通Activity的执行方式执行 CATEGORY_HOME该组件为Home Activity CATEGORY_LAUNCHER优先级最高的Activity,通常为入口ACTION_MAIN配合使用 CATEGORY_BROWSABLE可以使用浏览器启动 CATEGORY_GADGET可以内嵌到另外的Activity中 - 6 - Component属性 Component属性用于指明Intent的目标组件的类名称。 通常Android会根据Intent中包含的其他属性的信息,比如Action、 Data/Type、Category进行查

8、找,最终找到一个与之匹配的目标组件。但 是,如果指定了Component这个属性,Intent则会直接根据组件名查找 到相应的组件,而不再执行上述查找过程。指定Component属性后, Intent的其他属性都是可选的。 根据Intent寻找目标组件时所采用的方式不同,可以将Intent分为两类: p显式Intent,这种方式通过直接指定组件名称Component来实现; p隐式Intent,这种方式通过Intent Filter过滤实现,过滤时通常根据 Action、Data和Category属性进行匹配查找。 显式Intent通过setComponent()、setClassName()

9、或setClass()设置组 件名: /创建一个Intent对象 Intent intent = new Intent(); /指定Intent对象的目标组件是Activity2 intent.setClass(Activity1.this, Activity2.class); 当前环境 目标组件 - 7 - Extra属性 Extra属性用于添加一些附加信息,例如发送一个邮件,就可以通过 Extra属性来添加主题(subject)和内容(body)。 通过使用Intent对象的putExtra()方法来添加附加信息 将一个人的姓名附加到Intent对象中,代码如下所示 Intent inte

10、nt = new Intent(); intent.putExtra(name,zhangsan); 通过使用Intent对象的getXXXExtra()方法可以获取附加信息。例如, 将上面代码存入Intent对象中的人名获取出来,因存入的是字符串, 所以可以使用getStringExtra()方法获取数据 String name=intent.getStringExtra(name); - 8 - Intent启动 Intent启动不同组件的方法: 核心组组件调调用方法作用 Activity Context.startActivity() Activity.startActivityForR

11、estult() 启动一个Activity或使一个已存在 的Activity去做新的工作 Services Context.startService() 初始化一个Service或传递 一个新 的操作给当前正在运行的Service Context.bindService()绑定一个已存在的Service Broadcast Receiver Context.sendBroadcast() Context.sendOrderedBroadcast() Context.sendStickyBroadcast() 对所有想接受消息的Broadcast Receiver传递 消息 - 9 - Inte

12、nt消息传递 Intent的Extra属性用于添加一些附加信息,利用该属性可以进行消息 的传递。 将传递的信息存放到Extra属性中有如下两种方式: p一种是直接调用putExtra()方法将信息添加到Extra属性中,然后通 过调用getXXXExtra()方法进行获取即可。这种方式比较简单、直接 ,主要用于数据量比较少的情况下。 p另一种是先将数据封装到Bundle包中,Bundle可以被看成一个“ 键/值”映射的哈希表,当数据量比较多时,可以使用Bundle存放 数据;然后通过putExtras()方法将Bundle对象添加到Extra属性中 ,再通过使用getExtras()方法获取存

13、放的Bundle对象;最后读取 Bundle包中的数据。这种方式是间接通过Bundle包对数据先进行 封装,再进行传递,实现起来比较繁琐,因此主要用于数据量较多 的情况。 - 10 - Intent消息传递 - Bundle类 方法功能描述 Object get(String key)获取关键字key对应 的数据 boolean getBoolean(String key) 获取关键字key对应 的布尔值,若找不到关键字的记录 ,则返回 false boolean getBoolean (String key, boolean defaultValue) 获取关键字key对应 的布尔值,若找不

14、到关键字的记录 ,则返回 defaultValue Bundle getBundle(String key) 获取关键字key对应 的Bundle对象,若找不到关键字的记录 ,则返 回null char getChar (String key)获取关键字key对应 的char值,若找不到关键字的记录 ,则返回0 char getChar (String key, char defaultValue) 获取关键字key对应 的char值,若找不到关键字的记录 ,则返回 defaultValue boolean hasFileDescriptors() Bundle对象是否包含文件描述符,返回tr

15、ue则Bundle对象包含文件 描述符,否则不包含 void putAll (Bundle map)插入map到该Bundle对象中 void putBoolean (String key, boolean value) 插入布尔值value到该Bundle对象中,若关键字key已存在,则原有 值被value替代 void putBundle (String key, Bundle value)插入Bundle对象value 到该Bundle对象中 void putByte (String key, byte value) 插入字节值 value 到该Bundle对象中 void remove

16、 (String key) 移除关键字为key的记录 int size () 获取Bundle对象的关键字个数 - 11 - Intent Filter Intent可以通过显示方式或隐式方式找到目标组件,显示方式是直接通 过设置组件名来实现,而隐式方式则是通过Intent Filter过滤实现。 Android提供了两种生成Intent Filter方式: p一种是通过IntentFilter类生成; p另一种通过在配置文件AndroidManifest.xml中定义 元素生成。 - 12 - 元素 在AndroidManifest.xml配置文件中,IntentFilter以 元素来指定,一个组件中可以有多个元素,每个 元素描述不同的能力。 元素中常用、和这些 子元素,分别对应Intent中的Action、Data和Ca

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号