Broadcast Receiver 的使用

导读:Android中的四大组件是 Activity、Service、Broadcast和Content Provider。而Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。

Broadcast Receiver 的使用

1、Broadcast Receiver简介
2、Broadcast Receiver接收系统自带的广播
3、自定义广播

Broadcast Receiver接收系统自带的广播

我们做一个例子,功能是在系统启动时播放一首音乐。
1、建立一个项目Lesson21_BroadcastReceiver,拷贝一首音乐进res/raw目录
2、建立HelloBroadcastReceiver.java 内容如下:

01package android.demo;
02 
03import android.content.BroadcastReceiver;
04import android.content.Context;
05import android.content.Intent;
06import android.media.MediaPlayer;
07import android.util.Log;
08 
09public class HelloBroadReciever extends BroadcastReceiver {
10 
11//如果接收的事件发生
12@Override
13public void onReceive(Context context, Intent intent) {
14//则输出日志
15Log.e("HelloBroadReciever", "BOOT_COMPLETED!!!!!!!!!!!!!!!!!!!!!!!!!");
16Log.e("HelloBroadReciever", ""+intent.getAction());
17 
18//则播放一首音乐
19MediaPlayer.create(context, R.raw.babayetu).start();
20}
21}
在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、在MainBroadcastReceiver.java中填写如下代码:
01package android.demo;
02 
03import android.app.Activity;
04import android.content.Intent;
05import android.os.Bundle;
06import android.view.View;
07import android.widget.Button;
08 
09public class MainBroadcastReceiver extends Activity {
10/** Called when the activity is first created. */
11@Override
12public void onCreate(Bundle savedInstanceState) {
13super.onCreate(savedInstanceState);
14setContentView(R.layout.main);
15 
16Button b1 = (Button) findViewById(R.id.Button01);
17 
18b1.setOnClickListener(new View.OnClickListener() {
19 
20@Override
21public void onClick(View v) {
22//定义一个intent
23Intent intent = new Intent().setAction(
24"android.basic.lesson21.Hello").putExtra("yaoyao",
25"yaoyao is 189 days old ,27 weeks -- 2010-08-10");
26//广播出去
27sendBroadcast(intent);
28}
29});
30}
31}
更改 HelloBroadReceiver.java 内容如下:
01package android.demo;
02 
03import android.content.BroadcastReceiver;
04import android.content.Context;
05import android.content.Intent;
06import android.media.MediaPlayer;
07import android.util.Log;
08 
09public class HelloBroadReciever extends BroadcastReceiver {
10 
11//如果接收的事件发生
12@Override
13public void onReceive(Context context, Intent intent) {
14//对比Action决定输出什么信息
15if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
16Log.e("HelloBroadReciever", "BOOT_COMPLETED !!!!!!!!!!!!!!!!!!!!!!!!!");
17}
18 
19if(intent.getAction().equals("android.basic.lesson21.Hello")){
20Log.e("HelloBroadReciever", "Say Hello to Yaoyao !!!!!!!!!!!!!!!!!!!!!!!!!");
21Log.e("HelloBroadReciever", intent.getStringExtra("yaoyao"));
22}
23 
24//播放一首音乐
25MediaPlayer.create(context, R.raw.babayetu).start();
26}
27}
更改 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值