版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中数学 第一章 集合与函数概念 新人教版必修1
- 土建类施工组织设计
- 2024年度旅游包车服务详细合同
- 2024年度电气设备安装工程设计合同
- 2024中国电力建设集团水电水利规划设计总院招聘3人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国电信江苏公司春季招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国冶金地质总局在京单位招考应届毕业生易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国一冶集团限公司交通工程公司招聘80人易考易错模拟试题(共500题)试卷后附参考答案
- 2024下半年江苏兴海控股集团限公司招聘17人易考易错模拟试题(共500题)试卷后附参考答案
- 2024上半年福建福州市连江县部分国企业招聘9人易考易错模拟试题(共500题)试卷后附参考答案
- 刘力红思考中医
- 血液运输物流服务投标方案
- 机电保安制度
- 浅谈小学数学后进生的产生原因及转化策略
- 高中英语-John Snow Defeats“King Cholera”教学课件设计
- 围手术期护理论文范文10篇
- 华为5GNR初中级理论考试参考题库(含答案)
- 涉校矛盾纠纷排查化解工作方案
- 学院(校)食堂餐饮企业承包经营退出管理制度
- 中级纺织工程师工作计划工作总结述职报告
- Unit3Whatcolouristhisballoon颜色单词演练
评论
0/150
提交评论