Android应用程序开发技术 课件 第7章 Intent与BroadcastReceiver_第1页
Android应用程序开发技术 课件 第7章 Intent与BroadcastReceiver_第2页
Android应用程序开发技术 课件 第7章 Intent与BroadcastReceiver_第3页
Android应用程序开发技术 课件 第7章 Intent与BroadcastReceiver_第4页
Android应用程序开发技术 课件 第7章 Intent与BroadcastReceiver_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章Intent与BroadcastReceiverAndroid应用程序开发技术内容安排7.1Intent7.2BroadcastReceiver内容安排7.1Intent7.2BroadcastReceiver7.1IntentIntent主要是解决Android应用的各组件之间的通讯。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述。Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给被调用的组件,并完成组件的调用。

7.1.1Intent原理Intent原理:Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent主要有以下几种重要用途:1.启动Activity2.启动Service3.发送广播7.1.2Intent分类Intent分类:Intent可以分为两组,分别为显式Intent和隐式Intent。显式Intent:通过名字指定目标组件。显式Intent通常用于应用程序内部消息,如一个活动启动从属的服务或启动一个姐妹活动。下面给出一段代码,通过显式调用打开一个网页,具体代码如下:7.1.2Intent分类

隐式Intent:并不指定目标的名字(组件名字字段为空)。隐式Intent通常用于激活其他应用程序中的组件。创建一个拍照程序,下面给出一段具体代码:7.1.3Intent属性Intent对象主要有六个属性,分别是ComponentName(组件名称)、Action(动作)、Category(类别)、Data(数据)、Extras(额外)、Flags(标记)。1.ComponentName(组件名称)ComponentName是指要处理这个Intent的组件的名字。组件名字是可选的,如果被设置了,这个Intent对象将被传递到指定的类。7.1.3Intent属性2.动作(Action)规定了Intent要完成的动作,是一个字符串常量。使用setAction()来设置Action属性,使用getAction()来获得Action属性。既可以使用系统内置的Action,也可以自己定义。系统自定义的Action,如ACTION_VIEW,ACTION_EDIT,ACTION_MAIN等等。

3.数据(Data)

数据(data)作用于Intent上的数据URI和数据MIME类型,不同的动作有不同的数据规格。例如:如果动作字段是ACTION_EDIT,数据字段应该包含将显示用于编辑的文档的URI;如果动作是ACTION_CALL,数据字段应该是一个含呼叫电话号码的URI;如果动作是ACTION_VIEW,数据字段应该是根据用户需求设置数据类型打开相应的Activity。7.1.3Intent属性

4.种类(Category)通过Action,配合Data或Type属性可以准确的表达出一个完整的意图了。但为了使的”意图”更加精确,给意图添加一些约束,这个约束由“意图”的Catagory属性实现。一个意图只能指定一个action属性,但是可以添加一个或多个Catagory属性。Category属性可以自定义字符串实现,但为了方便不同应用之间的通信还可以设置系统预定义的Category常量。7.1.3Intent属性5.附加信息(Extras)Extras用于向Intent组件添加附加信息,采用键值对的形式保存附加信息。例如,一个ACTION_TIMEZ0NE_C-HANGE动作有一个“time-zone”的附加信息,标识新的时区;ACTIONHEADSETPLUG动作有一个“state”附加信息,标识头部是否塞满或未塞满,有一个“name”附加信息,标识头部的类型。Intent对象中有系列的put...()方法用于插入各种附加数据,一系列的get...()方法用于读取数据,这些方法与Bundle对象的方法类似。7.1.3Intent属性【例7-2】创建Android项目,主要使用putExtras()方法和getExtras()方法实现为Intent添加附加信息和读取附加信息的功能。创建一个工程名为samp7_2的项目,包名为xsyu.jsj.samp7_2的空白工程。

在布局文件main.xm1中添加一个Button组件btn,并设置其文本为“跳转”。7.1.4使用Intent启动Activity实例代码如下:

在res/layout目录下创建个link.xml文件,用来作为Activity的布局文件,在该布局文件中添加一个TextView组件代码如下:7.1.4使用Intent启动Activity实例

打开MainActivity.java文件,定义一个int类型常量,用来作为请求标识,代码如下:privatefinalstaticintREQUESTCODE=1;//声明请求标识7.1.4使用Intent启动Activity实例

在MainActivity.java文件的OnCreate()方法中,获取布局文件中的Button按钮,并为其设置单击监听事件,代码如下:7.1.4使用Intent启动Activity实例在该方法中,首先创建一个Intent对象,并设置要打开的Activity,然后使用Intent对象putExtra()方法设置附加信息,最后使用startActivityFarResult()方法启动Activity。主要代码如下:7.1.4使用Intent启动Activity实例打开AcceptdataActivity.java文件,在OnCreate()方法中,使用Intent对象的getExtras()方法获取附加信息,并显示到TextView组件中。OnCreate()方法代码如下:7.1.4使用Intent启动Activity实例内容安排7.1Intent7.2BroadcastReceiver7.2BroadcastReceiverBroadcastReceiver,即广播接收器,是一个转租与接收广播通知信息并做出对应处理的组件。很多广播源自于系统代码,比如,同时时区改变、电池电量低、拍摄一张照片或用户改变语言选项。应用程序也可以进行广播,比如通知其他应用程序下载一些数据完成并处于可用状态。Android中的广播时间有两种,一种就是系统广播事件,另一种是自定义广播事件。7.2.1广播机制及BroadcastReceiver原理在Android里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。广播作为Android组件间的通信方式,可以使用的场景如下:同一APP内部的同一组件内的消息通信(单个或多个线程之间);同一APP内部的不同组件之间的消息通信(单个进程);同一APP具有多个进程的不同组件之间的消息通信;不同APP之间的组件之间消息通信;7.2.2BroadcastReceiver分类BroadcastReciver主要有以下两种类型:普通广播。普通广播对于多个接收者来说是完全异步的,通常每个接收者都无需等待即可以接收到广播,接收者相互之间不会有影响。对于这种广播,接收者无法终止广播,即无法阻止其他接收者的接收动作。有序广播。有序广播比较特殊,它每次只发送到优先级较高的接收者,然后由优先级高的接受者再传播到优先级低的接收者,优先级高的接收者有能力终止这个广播。7.2.3

BroadcastReceiver注册BroadcastReceiver注册分为两种注册方式:静态注册和动态注册方式。1.静态注册。静态注册需要在AndroidManifest.xml清单文件中进行注册,代码如下。7.2.3

BroadcastReceiver注册2.动态注册。动态注册只需要在java文件中进行注册即可,代码如下。IntentFilterintentFilter=newIntentFilter();BroadcastReceiverTestbroadcastRecevierTest=newBroadcastReceiverTest();intentFilter.addAction("com.example.mytest.BroadcastReceiverTest");//这是一条自定义的广播registerReceiver(broadcastRecevierTest,intentFilter);7.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论