一、Broadcast Receiver简介
Android中的四大组件是 Activity、Service、Broadcast和Content Provider。而Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。那么Broadcast Receiver组件就提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。
二、Broadcast Receiver接收系统自带的广播
我们做一个例子,功能是在系统启动时播放一首音乐。
1、建立一个项目Lesson21_BroadcastReceiver,拷贝一首音乐进res/raw目录
2、建立HelloBroadcastReceiver.java 内容如下:
01 package android.basic.lesson21;
02
03 import android.content.BroadcastReceiver;
04 import android.content.Context;
05 import android.content.Intent;
06 import android.media.MediaPlayer;
07 import android.util.Log;
08
09 public class HelloBroadReciever extends BroadcastReceiver {
10
11 //如果接收的事件发生
12 @Override
13 public void onReceive(Context context, Intent intent) {
14 //则输出日志
15 Log.e("HelloBroadReciever", "BOOT_COMPLETED!!!!!!!!!!!!!!!!!!!!!!!!!");
16 Log.e("HelloBroadReciever", ""+intent.getAction());
17
18 //则播放一首音乐
19 MediaPlayer.create(context, R.raw.babayetu).start();
20 }
21 }
3、在AndroidManifest.xml中注册此Receiver :
01 <?xml version="1.0" encoding="utf-8"?>
02 <manifest xmlns:android="http://schemas.android.com/apk/res/android"android:versionname="1.0" android:versioncode="1" package="android.basic.lesson21">
03 <application android:icon="@drawable/icon" android:label="@string/app_name">
04 <activity android:label="@string/app_name"android:name=".MainBroadcastReceiver">
05 <intent -filter="">
06 <action android:name="android.intent.action.MAIN">
07 <category android:name="android.intent.category.LAUNCHER">
08 </category></action></intent>
09 </activity>
10 <!-- 定义Broadcast Receiver 指定监听的Action -->
11 <receiver android:name="HelloBroadReciever">
12 <intent -filter="">
13 <action android:name="android.intent.action.BOOT_COMPLETED">
14 </action></intent>
15 </receiver>
16 </application></manifest>
4、发布程序,启动模拟器,可以在Logcat中看到:
同时能听到音乐播放的声音。说明我们确实接收到了系统启动的广播事件,并做出了响应。
三、自定义广播
下面我们学习自己制作一个广播。我们接着刚才的例子,继续写下去。
5、在MainBroadcastReceiver.java中填写如下代码:
01 package android.basic.lesson21;
02
03 import android.app.Activity;
04 import android.content.Intent;
05 import android.os.Bundle;
06 import android.view.View;
07 import android.widget.Button;
08
09 public class MainBroadcastReceiver extends Activity {
10 /** Called when the activity is first created. */
11 @Override
12 public void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.main);
15
16 Button b1 = (Button) findViewById(R.id.Button01);
17
18 b1.setOnClickListener(new View.OnClickListener() {
19
20 @Override
21 public void onClick(View v) {
22 //定义一个intent
23 Intent intent = new Intent().setAction(
24 "android.basic.lesson21.Hello").putExtra("yaoyao",
25 "yaoyao is 189 days old ,27 weeks -- 2010-08-10");
26 //广播出去
27 sendBroadcast(intent);
28 }
29 });
30 }
31 }
6、更改 HelloBroadReceiver.java 内容如下:
01 package android.basic.lesson21;
02
03 import android.content.BroadcastReceiver;
04 import android.content.Context;
05 import android.content.Intent;
06 import android.media.MediaPlayer;
07 import android.util.Log;
08
09 public class HelloBroadReciever extends BroadcastReceiver {
10
11 //如果接收的事件发生
12 @Override
13 public void onReceive(Context context, Intent intent) {
14 //对比Action决定输出什么信息
15 if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
16 Log.e("HelloBroadReciever", "BOOT_COMPLETED !!!!!!!!!!!!!!!!!!!!!!!!!");
17 }
18
19 if(intent.getAction().equals("android.basic.lesson21.Hello")){
20 Log.e("HelloBroadReciever", "Say Hello to Yaoyao !!!!!!!!!!!!!!!!!!!!!!!!!");
21 Log.e("HelloBroadReciever", intent.getStringExtra("yaoyao"));
22 }
23
24 //播放一首音乐
25 MediaPlayer.create(context, R.raw.babayetu).start();
26 }
27 }
7、更改 AndroidManifest.xml 内容如下:
01 <?xml version="1.0" encoding="utf-8"?>
02 <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="android.basic.lesson21" android:versionname="1.0" android:versioncode="1">
03 <application android:icon="@drawable/icon" android:label="@string/app_name">
04 <activity android:label="@string/app_name"android:name=".MainBroadcastReceiver">
05 <intent -filter="">
06 <action android:name="android.intent.action.MAIN">
07 <category android:name="android.intent.category.LAUNCHER">
08 </category></action></intent>
09 </activity>
10 <!-- 定义Broadcast Receiver 指定监听的Action 这里我们的接收器,接收了2个Action,一个系统的一个我们自定义的 -->
11 <receiver android:name="HelloBroadReciever">
12 <intent -filter="">
13 <action android:name="android.intent.action.BOOT_COMPLETED">
14 </action></intent>
15 <intent -filter="">
16 <action android:name="android.basic.lesson21.HelloYaoYao">
17 </action></intent>
18
19 </receiver>
20 </application>
21 <uses -sdk="" android:minsdkversion="8">
22 </uses></manifest>
8、运行程序,点击按钮,查看LogCat,听听声音
Android中的四大组件是 Activity、Service、Broadcast和Content Provider。而Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。那么Broadcast Receiver组件就提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。
二、Broadcast Receiver接收系统自带的广播
我们做一个例子,功能是在系统启动时播放一首音乐。
1、建立一个项目Lesson21_BroadcastReceiver,拷贝一首音乐进res/raw目录
2、建立HelloBroadcastReceiver.java 内容如下:
01 package android.basic.lesson21;
02
03 import android.content.BroadcastReceiver;
04 import android.content.Context;
05 import android.content.Intent;
06 import android.media.MediaPlayer;
07 import android.util.Log;
08
09 public class HelloBroadReciever extends BroadcastReceiver {
10
11 //如果接收的事件发生
12 @Override
13 public void onReceive(Context context, Intent intent) {
14 //则输出日志
15 Log.e("HelloBroadReciever", "BOOT_COMPLETED!!!!!!!!!!!!!!!!!!!!!!!!!");
16 Log.e("HelloBroadReciever", ""+intent.getAction());
17
18 //则播放一首音乐
19 MediaPlayer.create(context, R.raw.babayetu).start();
20 }
21 }
3、在AndroidManifest.xml中注册此Receiver :
01 <?xml version="1.0" encoding="utf-8"?>
02 <manifest xmlns:android="http://schemas.android.com/apk/res/android"android:versionname="1.0" android:versioncode="1" package="android.basic.lesson21">
03 <application android:icon="@drawable/icon" android:label="@string/app_name">
04 <activity android:label="@string/app_name"android:name=".MainBroadcastReceiver">
05 <intent -filter="">
06 <action android:name="android.intent.action.MAIN">
07 <category android:name="android.intent.category.LAUNCHER">
08 </category></action></intent>
09 </activity>
10 <!-- 定义Broadcast Receiver 指定监听的Action -->
11 <receiver android:name="HelloBroadReciever">
12 <intent -filter="">
13 <action android:name="android.intent.action.BOOT_COMPLETED">
14 </action></intent>
15 </receiver>
16 </application></manifest>
4、发布程序,启动模拟器,可以在Logcat中看到:


同时能听到音乐播放的声音。说明我们确实接收到了系统启动的广播事件,并做出了响应。
三、自定义广播
下面我们学习自己制作一个广播。我们接着刚才的例子,继续写下去。
5、在MainBroadcastReceiver.java中填写如下代码:
01 package android.basic.lesson21;
02
03 import android.app.Activity;
04 import android.content.Intent;
05 import android.os.Bundle;
06 import android.view.View;
07 import android.widget.Button;
08
09 public class MainBroadcastReceiver extends Activity {
10 /** Called when the activity is first created. */
11 @Override
12 public void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.main);
15
16 Button b1 = (Button) findViewById(R.id.Button01);
17
18 b1.setOnClickListener(new View.OnClickListener() {
19
20 @Override
21 public void onClick(View v) {
22 //定义一个intent
23 Intent intent = new Intent().setAction(
24 "android.basic.lesson21.Hello").putExtra("yaoyao",
25 "yaoyao is 189 days old ,27 weeks -- 2010-08-10");
26 //广播出去
27 sendBroadcast(intent);
28 }
29 });
30 }
31 }
6、更改 HelloBroadReceiver.java 内容如下:
01 package android.basic.lesson21;
02
03 import android.content.BroadcastReceiver;
04 import android.content.Context;
05 import android.content.Intent;
06 import android.media.MediaPlayer;
07 import android.util.Log;
08
09 public class HelloBroadReciever extends BroadcastReceiver {
10
11 //如果接收的事件发生
12 @Override
13 public void onReceive(Context context, Intent intent) {
14 //对比Action决定输出什么信息
15 if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
16 Log.e("HelloBroadReciever", "BOOT_COMPLETED !!!!!!!!!!!!!!!!!!!!!!!!!");
17 }
18
19 if(intent.getAction().equals("android.basic.lesson21.Hello")){
20 Log.e("HelloBroadReciever", "Say Hello to Yaoyao !!!!!!!!!!!!!!!!!!!!!!!!!");
21 Log.e("HelloBroadReciever", intent.getStringExtra("yaoyao"));
22 }
23
24 //播放一首音乐
25 MediaPlayer.create(context, R.raw.babayetu).start();
26 }
27 }
7、更改 AndroidManifest.xml 内容如下:
01 <?xml version="1.0" encoding="utf-8"?>
02 <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="android.basic.lesson21" android:versionname="1.0" android:versioncode="1">
03 <application android:icon="@drawable/icon" android:label="@string/app_name">
04 <activity android:label="@string/app_name"android:name=".MainBroadcastReceiver">
05 <intent -filter="">
06 <action android:name="android.intent.action.MAIN">
07 <category android:name="android.intent.category.LAUNCHER">
08 </category></action></intent>
09 </activity>
10 <!-- 定义Broadcast Receiver 指定监听的Action 这里我们的接收器,接收了2个Action,一个系统的一个我们自定义的 -->
11 <receiver android:name="HelloBroadReciever">
12 <intent -filter="">
13 <action android:name="android.intent.action.BOOT_COMPLETED">
14 </action></intent>
15 <intent -filter="">
16 <action android:name="android.basic.lesson21.HelloYaoYao">
17 </action></intent>
18
19 </receiver>
20 </application>
21 <uses -sdk="" android:minsdkversion="8">
22 </uses></manifest>
8、运行程序,点击按钮,查看LogCat,听听声音


发表评论
-
startActivityForResult 简介
2011-03-29 15:55 1284依次打开Activity A1--A2--A3--A4 这时 ... -
startActivityForResult
2011-03-29 15:49 1146startActivityForResult 方法-- ... -
史上最全的Android的Tab与TabHost讲解
2011-03-28 11:22 1591Tab与TabHost 这就是Tab,而盛放Tab的 ... -
Android对话框
2011-03-25 11:21 1125Android 对话框(Dialog)大全 ... -
PreferenceActivity详解
2011-03-25 11:15 1442为了引入这个概率 首先从需求说起 即:现有某Activity专 ... -
TCP/UDP/HTTP
2011-03-25 11:09 1125先来一个讲TCP、UDP和HTTP ... -
9png
2011-03-25 11:08 1914今天学习了用9png图来优化横屏竖屏的UI,使用sdk自带的工 ... -
Notification
2011-03-25 11:07 939Android系统的状态栏(Status Bar)中有一个创新 ... -
一些技巧
2011-03-25 11:03 7861:查看是否有存储卡插入 String status=Envi ... -
布局像素单位
2011-03-25 11:03 826Android的layout文件中有时候可能会指定具体的单位, ... -
使用ActivityGroup来切换Activity和Layout
2011-03-25 11:02 1134在一个主界面中做Activity切换一般都会用TabActiv ... -
activitygroup
2011-03-25 11:01 1730说说tabhost和activitygroup 最近 ... -
线程
2011-03-25 11:01 1013今天在论坛上看到一些关于线程的帖子,我觉得与我理解的有些差异, ... -
类级框架
2011-03-25 11:00 744类集框架:Collection,Map,Iterator,En ... -
Intent打电话
2011-03-25 11:00 1217intent英文意思是意图,pending表示即将发生或来临的 ... -
Intent Uri
2011-03-25 10:59 1068进入联系人页面 1.Intent intent = new I ... -
Service
2011-03-25 10:59 939一、Service的概念 Service是Android程序中 ... -
ContentProvider MIME类型
2011-03-25 10:55 1237Android程序的主要4部分 ... -
ContentProvider-1查询
2011-03-25 10:55 1236今天看了android的官方文档中ContentProvide ... -
ContentProvider-2modify data:insert,update,delete
2011-03-25 10:54 1200今天补充关于modify data ...
相关推荐
### 四大组件详解:Activity、Service、Content Provider与Broadcast Receiver #### 一、Activity **定义:** Activity是Android应用程序中的四大基本组件之一,它代表一个屏幕界面,用户可以直接与其进行交互。每...
在Android开发中,四大组件是Activity、Service、Content Provider以及我们这里关注的Broadcast Receiver(广播接收器)。Broadcast Receiver是Android系统中的一个重要组成部分,它允许应用程序在后台接收并响应...
通过创建BroadcastReceiver,注册它,发送Broadcast,以及在接收端处理数据,我们可以轻松地在两个不同的Activity之间传递信息。注意,为了优化资源使用,记得在适当的时候注销BroadcastReceiver。
### 第八章 Android广播事件处理Broadcast Receiver #### 知识点一:理解Broadcast Receiver的作用与意义 在Android应用开发过程中,Broadcast Receiver是一种重要的组件,它主要用于接收来自系统或其他应用程序...
本教程将引导Android新手一步步实现Broadcast Receiver。 首先,我们需要创建一个新的BroadcastReceiver类。在Android Studio中,可以在项目结构中选择“New” -> “Java Class”,然后命名为“MyBroadcastReceiver...
<receiver android:name=".StartupBroadcastReceiver"> </receiver> ``` 3. 发送广播:在适当的时候,例如应用程序启动时,发送一个带有“com.example.START_SERVICE”动作的广播,触发BroadcastReceiver。 ...
本项目“Android课程设计-记事本(Activity, Service, Broadcast Receiver, Provider)实现”即是在这样的背景下提出的,旨在通过一个记事本应用的设计与开发,使学生能够综合运用Android的四大组件:Activity、...
广播接收者(Broadcast Receiver)是Android系统中的一个重要组件,它允许应用程序在后台接收并响应系统或应用程序广播事件。广播事件可以是系统级别的,如设备启动、网络状态改变,也可以是应用自定义的,用于在...
### Android的Broadcast Receiver应用机制 #### 一、BroadcastReceiver简介 在Android开发中,四大核心组件包括:Activity、Service、BroadcastReceiver以及Content Provider。其中,BroadcastReceiver是一种特殊...
在Android开发中,Broadcast Receiver(广播接收者)是四大组件之一,它负责监听系统或应用程序发送的广播消息,并在接收到这些消息时执行相应的操作。本项目“android-simple-broadcast-receiver-app”提供了一个...
文章目录Android四大组件之Broadcast Receiver概述广播接收器(Broadcast Receiver)Broadcast Receiver简介Broadcast Receiver的注册一. 静态注册二. 动态注册三. 本地广播发送Broadcast Receiver广播的三种发送...
Broadcast_Receiver_Example 是一个基于Android平台的项目,主要展示了如何使用Broadcast Receiver这一核心组件。Broadcast Receiver(广播接收器)是Android四大组件之一,用于接收系统或应用广播事件,即使应用在...
Broadcast Receiver(广播接收者)是Android四大组件之一,专门用来接收并响应系统或自定义广播事件。本教程将深入探讨Android广播的使用,适合初学者入门。 首先,我们需要了解Broadcast Receiver的基本概念。...
wendang Broadcast_Receiver
【时间计时器】是一款基于Android Studio开发的应用,它整合了Broadcast Receiver(广播接收者)和服务(Service)等核心组件,以实现精准的时间管理功能。在Android应用开发中,理解和掌握这些知识点至关重要,因为...
这篇博客"Android实例四:BroadCast_Receiver"将深入探讨如何在实际项目中使用BroadcastReceiver。 首先,我们需要了解BroadcastReceiver的基本概念。BroadcastReceiver是一个抽象类,用于接收并处理系统或应用广播...
Android系统中的广播Broadcast,Receiver例子,可以用LogCat察看整个运行的生命周期.MainActivity界面上有两个按钮,分别是Start Counter和Stop Counter按钮,点击前者开始计数,而点击后者则停止计数。
本篇文章将深入探讨Intent的分类及其在Android应用中的作用,同时也会提及Broadcast Receiver,它是Android系统中处理全局广播的重要组件。 首先,我们来看Intent的两大分类:显式Intent和隐式Intent。 1. **显式...
Android源代码 ...工程2:Broadcast的Receiver,负责监听广播(2种注册方式:XML和代码动态注册),一旦监听到广播,弹出Activity,并显示广播携带的数据。 本代码含金量很高哦,简单而直观解决了程序间的通信!
下面就具体介绍一下Broadcast Receiver组件的用法。 下面是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的──比如,...