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

<ignore_js_op>
Android Broadcast Receiver 使用入门的更多相关文章
- Android Broadcast Receiver注册
之前有关 Broadcast Receiver的链 动态注册 1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onRece ...
- Android Broadcast Receiver
说明 有时候我们在做android系统软件的时候,经常会需要做的事就是开机重新设置上次关机前的状态,当然,我们就会用到这个开机广播: <uses-permission android:name= ...
- android 四大组件Broadcast Receiver
本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...
- android的Broadcast receiver
broadcast receiver是用来监听intent的. android大量使用了broadcast receiver,比如:开机.电话打进来.发送消息,手机电量过低 有两种方式注册broadc ...
- Android四大组件--Broadcast Receiver具体解释
本文主要讲述了: 一.BroadcastReceiver概述: 二.BroadcastReceiver事件分类 三.BroadcastReceiver事件的编程流程 四.两类BroadcastRece ...
- Android开发学习之路--Broadcast Receiver之初体验
学习了Activity组件后,这里再学习下另一个组件Broadcast Receiver组件.这里学习下自定义的Broadcast Receiver.通过按键自己发送广播,然后自己接收广播.新建MyB ...
- Android笔记(五):广播接收者(Broadcast Receiver)
Android有四大组件,分别为:Activity(活动).Service(服务).Content Provider(内容提供器).Broadcast Receiver(广播接收者). 引入广播的目的 ...
- Android学习笔记八:用Broadcast Receiver跨进程(跨app)通信
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7515194.html 在前面介绍四大组件的时候提到了可以对外部事件进行过滤的Broadcast Receive ...
- Android面试收集录2 Broadcast Receiver详解
1.Broadcast Receiver广播接收器简单介绍 1.1.定义 Broadcast Receiver(广播接收器),属于Android四大组件之一 在Android开发中,Broadcast ...
随机推荐
- 学习笔记:Twitter核心数据类库团队的Hadoop优化经验
一.来源 Streaming Hadoop Performance Optimization at Scale, Lessons Learned at Twitter (Data platform @ ...
- 第三章 Js变量的作用域和匿名函数
3.1 先看下面的事例: ①var temp=0; ②temp=0; 当js解析器检测到①这种情况的时候,解析器会为这个变量开辟一个内存空间,如果前面已经存在这个变量,就会把这个变量覆盖掉. 当解析器 ...
- Ruby On Rails 常用的精品Gem汇总
首先需要注明一点,本文是原创的并不是从其它地方转载.所有的数据是我从 GitHub 和 RubyGems 上码下来的,数据的截取时间就是本文的发布日期. RubyGems 的下载量可以看到在用这个 g ...
- css圆角矩形及去掉空格属性
css圆角矩形 -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; 去掉空格 white-space:nowra ...
- [BZOJ1951][SDOI2005]古代猪文(数论好题)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1951 分析: 练习数论知识的好题,涉及到费马小定理.lucas定理.求逆元
- 20.C#LINQ基础和简单使用(十一章11.1-11.2)
终于看到了第11章,之前虽然也有看过,但没有太仔细,在工作中也偶尔会使用,但不明白其中的原理,那现在就来讲讲LINQ,做一做书虫~~ 首先先了解下LINQ的三个要点: LINQ不能把非常复杂的查询表达 ...
- 第四课:seajs的模块编译_compile过程
最近比较闲,我就讲下seajs的模块编译_compile过程. 这里紧接着第三课的例子来讲解.首先是a.js的编译 Module.prototype._compile = function() { 1 ...
- iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
- 从零开始设计SOA框架(二):请求/响应参数的设计
每个接口都有请求参数.响应参数.其中请求参数分为公共参数和业务参数.响应参数分为两类:正常的响应参数.统一的错误参数 一.请求参数 1.公共参数:每个接口都有的参数,主要包含appkey.时间戳. ...
- LightOJ1348 树链剖分
简单题,看题目就懂. #include<queue> #include<stack> #include<cmath> #include<cstdio> ...