版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android应用程序开发教程——AndroidStudio版第7章Android广播接收器
BroadcastReceiver(广播接收器)也是Android系统四大组件之一,这种组件本质上就是一个全局的监听器,用于监听系统全局的广播信息。这些信息就是程序(包括用户开发的程序和系统内建的程序)所发出的BroadcastIntent(广播意图)。比如,当从网上下载数据完成后,应用程序可以发出广播信息通知其他程序,数据已经下载完成并可以使用了。这时,BroadcastReceiver可以监听到这个信息并采取对应的行动。我们需要通过以下两步来创建BroadcastReceiver,并使其响应与之相配的系统BroadcastIntent:创建BroadcastReceiver注册BroadcastReceiver
也有可能在以上两步之间增加一个步骤,就是当执行用户自定义BroadcastIntent时,你需要创建这个自定义Intent然后将其与BroadcastReceiver注册。7.1创建BroadcastReceiver
我们可以通过创建一个BroadcastReceiver子类的方法来创建一个广播接收器。然后再重写它的onReceive()方法,将Intent作为其参数来传递消息,例如如下代码:publicclassMyReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){Toast.makeText(context,"IntentDetected.",Toast.LENGTH_LONG).show();}}7.2注册BroadcastReceiver
一旦实现了BroadcastReceiver,接下来就应该指定该BroadcastReceiver能匹配的Intent,这就是注册BroadcastReceiver,如图7.1。注册BroadcastReceiver又需要考虑以下两种情况:接收用户自定义BroadcastIntent消息接收系统广播消息7.2.1接收用户自定义BroadcastIntent消息
如果你的应用程序组件(如Activity)生成一个自定义BroadcastIntent,你可以通过sendBroadcast()方法将其发送出去,例如如下代码:Intentintent=newIntent();intent.setAction("com.example.CUSTOM_INTENT");sendBroadcast(intent);在AndroidManifest.xml文件中对与之匹配的BroadcastReceiver进行注册,例如如下代码:<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><receiverandroid:name="MyReceiver"><intent-filter><actionandroid:name="com.example.CUSTOM_INTENT"></action></intent-filter></receiver></application>7.2.1接收用户自定义BroadcastIntent消息
每次Broadcast事件发生后,系统就会创建对应的BroadcastReceiver实例,并自动触发它的onReceive()方法,onReceive()方法执行完后,BroadcastReceiver实例就会被销毁。如果BroadcastReceiver的onReceive()方法不能在10秒内执行完成,Android就会认为该程序无响应。所以不要在BroadcastReceiver的onReceive()方法中执行一些耗时的操作,否则会弹出程序无响应对话框。如果确实需要根据Broadcast来完成一项比较耗时的操作,则可以考虑通过Intent启动一个Service来完成该操作。7.2.2接收系统广播消息除了接收用户发送的广播之外,BroadcastReceiver还有一个重要的用途:接收系统广播。如果应用程序需要在系统特定时刻执行某些操作,就可以通过监听系统广播来实现,。注册监听系统广播的BroadcastReceiver,需要在AndroidManifest.xml文件中对与系统广播Action常量匹配的BroadcastReceiver进行注册,例如如下代码:<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><receiverandroid:name="MyReceiver"><intent-filter><actionandroid:name="ent.action.BOOT_COMPLETED"></action></intent-filter></receiver></application>7.2.2接收系统广播消息Android的大量系统事件都会对外发送标准广播。Android常见的广播Action常量如表7.1所示。广播Action常量描述ent.action.BATTERY_CHANGED电池电量改变的广播ent.action.BATTERY_LOW电池电量低的广播ent.action.BATTERY_OKAY表示电池电量充足,即从电池电量低变化到饱满时会发出广播ent.action.BOOT_COMPLETED当系统启动完成后,这个动作被广播一次(只有一次)ent.action.SCREEN_ON当屏幕被打开之后时的广播ent.action.CALL当用户根据指明的信息向某人拨打电话时的广播ent.action.CALL_BUTTON当用户点击拨号按钮时的广播ent.action.DATE_CHANGED当系统日期被改变时的广播ent.action.REBOOT当系统重启时的广播【例7.1】监听用户自定义BroadcastIntent消息实例
步骤描述1打开AndroidStudio创建一个Android应用,Applicationname(应用名)取名为BroadcastCustom,CompanyDomain(公司域)取名为。2MinimumSDK选择API18:Android4.3(JellyBean)。3选择EmptyActivity。4不需要修改ActivityName,使用默认值,单击Finish(完成)。5右键点击工程的com.example.broadcastcustom目录,选择New->Other->BroadcastReceiver,新建一个BroadcastReceiver类取名MyReceiver.java。该文件将定义一个BroadcastReceiver。6将工程res/mipmap目录下的ic_launcher.png图片文件复制粘贴到res/drawable目录下。7在工程中找到ras/layout目录中的activity_main.xml文件,在其中添一个textView(文本框控件)控件,一天imageButton(图像按钮)和一个Button(普通按钮)控件(BroadcastIntent),按最后图7.2所示的运行效果图位置进行摆放。8按照如下代码修改.example.broadcastcustom目录下java文件MainActivity.java代码,为其添加自定义BroadcastIntent消息,并发送。9使用<receiver…/>标签在AndroidManifest.xml文件中注册BroadcastReceiver,并用<intent-filter…/>标签设置BroadcastReceiver的过滤器。10启动Genymotion模拟器,然后在Android工程中做如下代码修改。
这个例子将通过几个简单的步骤向我们展示如何创建一个AndroidBroadcastReceiver用于监听用户自定义BroadcastIntent消息。【例7.2】监听用户自定义BroadcastIntent消息实例
这个例子将通过几个简单的步骤向我们展示如何创建一个AndroidBroadcastReceiver用于监听手机电池状态的系统广播消息。步骤描述1打开AndroidStudio创建一个Android应用,Applicationname(应用名)取名为BroadcastSystem,CompanyDomain(公司域)取名为。2MinimumSDK选择API18:Android4.3(JellyBean)。3选择EmptyActivity。4不需要修改ActivityName,使用默认值,单击Finish(完成)。5右键点击工程的com.example.broadcastcustom目录,选择New->Other->BroadcastReceiver,新建一个BroadcastReceiver类取名MyReceiver.j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度农业保险代理与服务合同
- 2025年度高端制造装备研发股权投资及市场拓展合同
- 二零二五年度南昌商品房买卖合同2025版标准文本
- 2025年度个人门面出租合同附赠增值服务范本3篇
- 2025年度钢材运输服务合同模板
- 二零二五年度跨境电商进口生鲜食品采购合同范本4篇
- 华为认证智能协作中级 HCIP-Collaboration H11-861考试题库及答案
- 2025年度汽车租赁车辆租赁价格调整合同6篇
- 2025年度模具行业学徒培养用工合同示范4篇
- 2025年度南汇工商行政管理志编纂服务合同4篇
- 农村自建房安全合同协议书
- 《教科版》二年级科学下册全册课件(完整版)
- 杜仲叶药理作用及临床应用研究进展
- 4S店售后服务6S管理新规制度
- 高性能建筑钢材的研发与应用
- 无线广播行业现状分析
- 汉语言沟通发展量表(长表)-词汇及手势(8-16月龄)
- 高速公路相关知识讲座
- 儿科关于抗生素使用的PDCA
- 小学生必备古诗
- 手术室护理实践指南2023年
评论
0/150
提交评论