Android开发与实践-Android广播事件处理BroadcastReceiver_第1页
Android开发与实践-Android广播事件处理BroadcastReceiver_第2页
Android开发与实践-Android广播事件处理BroadcastReceiver_第3页
Android开发与实践-Android广播事件处理BroadcastReceiver_第4页
Android开发与实践-Android广播事件处理BroadcastReceiver_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论