版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章.Android广播事件处理BroadcastReceiver8.1BroadcastReceiver简介
BroadcastReceiver顾名思义是指广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现BroadcastReceiver来监听和响应这些广播的Intent。事件的广播比较简单,同样还是构建Intent对象,然后调用sendBroadcast()方法将广播发出。事件的接收是通过定义一个继承BroadcastReceiver的类来实现的,继承该类后覆盖其onReceive()方法,在该方法中响应事件。8.1BroadcastReceiver简介Android系统中定义了很多标准的BroadcastAction来响应系统广播事件。例如,ACTION_TIME_CHANGED(时间改变时触发)、ACTION_BOOT_COMPLETED(系统启动完成后触发)、ACTION_PACKAGE_ADDED(添加包时触发)、ACTIONB_ATTERY_CHANGED(电量低时触发)。当然,我们也可以自己定义BroadcastReceiver接收广播事件。8.2自己定义BroadcastReceiver来处理广播事件自己定义一个广播是比较简单的。首先在你的程序组件里构建你要广播的Intent,使用sendBroadcast方法发送出去。其次定义一个广播接收器,该广播接收器继承BroadcastReceiver,并且覆盖onReceive()方法来响应事件。最后注册该广播接收器,我们可以在代码中注册,也可以在AndroidManifest.xml配置文件中注册。下面通过一个实例来演示Intent发出广播和BroadcastReceiver处理广播的过程,实例步骤说明如下。
(1)创建一个工程“Chapter08_BroadcastReceiverl",在“com.amaker.ch08.app”包中创建一个MainActivity。在该类的顶部声明一个字符串定义广播Action,声明一个Button对象响应单击事件发出广播。在OnCreate()方法中设置当前布局视图,实例化8.2自己定义BroadcastReceiver来处理广播事件Button对象,为Button添加单击监听器,在onClick()方法中创建Intent对象,为其设置Action属性和Extra属性,使用该Intent发出广播。packagecom.amaker.ch08.app;
importcom.amaker.ch08.app.R;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;8.2自己定义BroadcastReceiver来处理广播事件publicclassMainActivityextendsActivity{
//定义一个Action常量
privatestaticfinalStringMY_ACTION="com.amaker.ch08.action.MY_ACTION";
//定义一个Button对象
privateButtonbtn;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//设置当前布局视图
setContentView(R.layout.main);
btn=(Button)findViewById(R.id.Button01);
//为按钮设置单击监听器
btn.setOnClickListener(newOnClickListener(){8.2自己定义BroadcastReceiver来处理广播事件
publicvoidonClick(Viewv){
//实例化Intent对象
Intentintent=newIntent();
//设置Intentaction属性
intent.setAction(MY_ACTION);
//为Intent添加附加信息
intent.putExtra("msg","地瓜地瓜,我是土豆,收到请回复,收到请回复!");
//发出广播
sendBroadcast(intent);
}
});
}}8.2自己定义BroadcastReceiver来处理广播事件(2)在工程的res\layout目录下创建一个布局文件main.xml,在其中添加一个Button组件。<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<Buttonandroid:text="发出广播..."
android:id="@+id/Button01"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>8.2自己定义BroadcastReceiver来处理广播事件(3)在工程的“com.amaker.ch08.app”包中定义一个MyReceiver类,该类继承BroadcastReceiver类,覆盖onReceive()方法来接收广播并显示收到的消息。packagecom.amaker.ch08.app;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.widget.Toast;publicclassMyReceiverextendsBroadcastReceiver{
@Override
publicvoidonReceive(Contextcxt,Intentintent){
8.2自己定义BroadcastReceiver来处理广播事件
//从Intent中获得信息
Stringmsg=intent.getStringExtra("msg");
//使用Toast显示
Toast.makeText(cxt,msg,Toast.LENGTH_LONG).show();
}}8.2自己定义BroadcastReceiver来处理广播事件(4)在工程的AndroidManifest.xml配置文件中声明广播接收器组件<receiverandroid:name="MyReceiver"><intent-filter>
<actionandroid:name="com.amaker.ch08.action.MY_ACTION"/>
</intent-filter>
</receiver>8.2自己定义BroadcastReceiver来处理广播事件程序运行结果如图8.1所示
图8.1测试广播事件8.3系统广播事件的处理除了上面我们自己定义的广播事件,Android系统还提供了很多标准广播Action。这些广播是系统自动发出的,我们直接定义事件接收器进行接收就可以使用这些系统消息了。常见的标准广播Action常量如表8.1所示。8.3系统广播事件的处理
下面我们通过实例来看看如何接收系统发出的广播,本实例我们通过接收系统启动完成(ACTION_
BOOT_COMPLETED)广播来测试系统广播事件。接收系统发出的广播,我们不需要自己再定义发出广播的Intent,只需要定义接收器就可以了。实例步骤说明如下。(1)在8.2节的工程基础上,在“com.amaker.ch08.app”包中创建一个MyReceiver类,该类继承BroadcastReceiver覆盖onReceive()显示系统启动完成广播信息。8.3系统广播事件的处理publicclassMyReceiver2extendsBroadcastReceiver{
@Override
publicvoidonReceive(Contextcontext,Intentintent){
//显示广播信息
Log.i("my_tag","BOOT_COMPLETED~~~~~~~~~~~~~~~~");
}}(2)在工程的AndroidManifest.xml配置文件中注册该接收器,注意这里<intent-filter>中的<action>属性必须是“ent.action.BOOT_COMPLETED”,才能接收系统启动完成广播事件。8.3系统广播事件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年厦门东海职业技术学院单招职业适应性考试题库及一套答案详解
- 2026年南京特殊教育师范学院单招职业技能测试题库及一套参考答案详解
- 四川省凉山州木里藏族自治县中学2026年高三第六次月考试卷(物理试题文)试题含解析
- 广安市重点中学2026年高三5月阶段测试数学试题试卷含解析
- 滨州市重点中学2026届高三第十五模数学试题含解析
- 河南省巩义市市直高中2025-2026学年高三暑假第二次阶段性测试数学试题试卷含解析
- 安庆市重点中学2026届高三第一次摸底考试语文试题文试题含解析
- 2025福建土楼旅游投资集团有限公司招聘16人笔试历年难易错考点试卷带答案解析2套试卷
- 2025湖南省矿产资源集团有限责任公司招聘1人笔试历年典型考点题库附带答案详解2套试卷
- 2025湖南岳阳市交通建设投资集团有限公司“四海揽才”招聘15人笔试参考题库附带答案详解
- 2026年小红书38好心情小会招商方案
- 2026年山东城市服务职业学院单招职业适应性测试模拟测试卷附答案
- 神经重症患者的护理风险评估
- 女性避孕方法临床应用中国专家共识
- 初中英语(完整版)连词and-or-but的用法练习题及答案
- 嘉兴微型顶管施工方案
- 新房建房申请书
- 结直肠外科的发展历程解析
- 输液错误不良事件课件
- 春节的传说故事(合集15篇)
- 京津冀金融协同发展:测度、困境与优化路径
评论
0/150
提交评论