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代码:

  1. package android.demo;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.media.MediaPlayer;
  6. import android.util.Log;
  7. public class HelloBroadReciever extends BroadcastReceiver {
  8. //如果接收的事件发生
  9. @Override
  10. public void onReceive(Context context, Intent intent) {
  11. //则输出日志
  12. Log.e("HelloBroadReciever", "BOOT_COMPLETED!!!!!!!!!!!!!!!!!!!!!!!!!");
  13. Log.e("HelloBroadReciever", ""+intent.getAction());
  14. //则播放一首音乐
  15. MediaPlayer.create(context, R.raw.babayetu).start();
  16. }
  17. }

复制代码

3、在AndroidManifest.xml中注册此Receiver :

java代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionname="1.0" android:versioncode="1" package="android.basic.lesson21">
  3. <application android:icon="@drawable/icon" android:label="@string/app_name">
  4. <activity android:label="@string/app_name" android:name=".MainBroadcastReceiver">
  5. <intent -filter="">
  6. <action android:name="android.intent.action.MAIN">
  7. <category android:name="android.intent.category.LAUNCHER">
  8. </category></action></intent>
  9. </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中填写如下代码:

java代码:

  1. package android.demo;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. public class MainBroadcastReceiver extends Activity {
  8. /** Called when the activity is first created. */
  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. Button b1 = (Button) findViewById(R.id.Button01);
  14. b1.setOnClickListener(new View.OnClickListener() {
  15. @Override
  16. public void onClick(View v) {
  17. //定义一个intent
  18. Intent intent = new Intent().setAction(
  19. "android.basic.lesson21.Hello").putExtra("yaoyao",
  20. "yaoyao is 189 days old ,27 weeks -- 2010-08-10");
  21. //广播出去
  22. sendBroadcast(intent);
  23. }
  24. });
  25. }
  26. }

复制代码

5、更改 HelloBroadReceiver.java 内容如下:

java代码:

  1. package android.demo;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.media.MediaPlayer;
  6. import android.util.Log;
  7. public class HelloBroadReciever extends BroadcastReceiver {
  8. //如果接收的事件发生
  9. @Override
  10. public void onReceive(Context context, Intent intent) {
  11. //对比Action决定输出什么信息
  12. if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
  13. Log.e("HelloBroadReciever", "BOOT_COMPLETED !!!!!!!!!!!!!!!!!!!!!!!!!");
  14. }
  15. if(intent.getAction().equals("android.basic.lesson21.Hello")){
  16. Log.e("HelloBroadReciever", "Say Hello to Yaoyao !!!!!!!!!!!!!!!!!!!!!!!!!");
  17. Log.e("HelloBroadReciever", intent.getStringExtra("yaoyao"));
  18. }
  19. //播放一首音乐
  20. MediaPlayer.create(context, R.raw.babayetu).start();
  21. }
  22. }

复制代码

6、更改 AndroidManifest.xml 内容如下:

java代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android.basic.lesson21" android:versionname="1.0" android:versioncode="1">
  3. <application android:icon="@drawable/icon" android:label="@string/app_name">
  4. <activity android:label="@string/app_name" android:name=".MainBroadcastReceiver">
  5. <intent -filter="">
  6. <action android:name="android.intent.action.MAIN">
  7. <category android:name="android.intent.category.LAUNCHER">
  8. </category></action></intent>
  9. </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. </receiver>
  19. </application>
  20. <uses -sdk="" android:minsdkversion="8">
  21. </uses></manifest>

复制代码

<ignore_js_op>

<ignore_js_op>

Android Broadcast Receiver 使用入门的更多相关文章

  1. Android Broadcast Receiver注册

    之前有关 Broadcast Receiver的链 动态注册 1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onRece ...

  2. Android Broadcast Receiver

    说明 有时候我们在做android系统软件的时候,经常会需要做的事就是开机重新设置上次关机前的状态,当然,我们就会用到这个开机广播: <uses-permission android:name= ...

  3. android 四大组件Broadcast Receiver

    本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...

  4. android的Broadcast receiver

    broadcast receiver是用来监听intent的. android大量使用了broadcast receiver,比如:开机.电话打进来.发送消息,手机电量过低 有两种方式注册broadc ...

  5. Android四大组件--Broadcast Receiver具体解释

    本文主要讲述了: 一.BroadcastReceiver概述: 二.BroadcastReceiver事件分类 三.BroadcastReceiver事件的编程流程 四.两类BroadcastRece ...

  6. Android开发学习之路--Broadcast Receiver之初体验

    学习了Activity组件后,这里再学习下另一个组件Broadcast Receiver组件.这里学习下自定义的Broadcast Receiver.通过按键自己发送广播,然后自己接收广播.新建MyB ...

  7. Android笔记(五):广播接收者(Broadcast Receiver)

    Android有四大组件,分别为:Activity(活动).Service(服务).Content Provider(内容提供器).Broadcast Receiver(广播接收者). 引入广播的目的 ...

  8. Android学习笔记八:用Broadcast Receiver跨进程(跨app)通信

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7515194.html 在前面介绍四大组件的时候提到了可以对外部事件进行过滤的Broadcast Receive ...

  9. Android面试收集录2 Broadcast Receiver详解

    1.Broadcast Receiver广播接收器简单介绍 1.1.定义 Broadcast Receiver(广播接收器),属于Android四大组件之一 在Android开发中,Broadcast ...

随机推荐

  1. try-catch和throw,throws的区别和联系

    转载:http://blog.sina.com.cn/s/blog_62148d1e0100hkqc.html 区别一:throw 是语句抛出一个异常:throws 是方法抛出一个异常: throw语 ...

  2. AutoMapper用法(转载)

    申明 本文转载自http://www.qeefee.com/article/automapper 作者:齐飞 配置AutoMapper映射规则 AutoMapper是基于约定的,因此在实用映射之前,我 ...

  3. LinuxMint下Apache Http源码安装过程

    1. 源码包下载 Apache Http安装要求必须安装APR.APR-Util.PCRE等包. Apache Http包下载地址:http://httpd.apache.org/download.c ...

  4. tmux列表重命名

    查看tmux会话列表时,会话名称是数值递增,不易识别 tmux ls 1: 1 windows (created Fri Oct 21 16:29:46 2016) [175x41]2: 1 wind ...

  5. Linux 下SVN服务器搭建

    系统环境        RHEL5.4最小化安装(关iptables,关selinux) + ssh + yum 一,安装必须的软件包.  yum install subversion (SVN服务器 ...

  6. JMeter工具的使用-ForEach

    1,Add Thread group this detail information about this panel as below link http://jmeter.apache.org/u ...

  7. JavaWeb项目前端规范(采用命名空间使js深度解耦合)

    没有规矩不成方圆,一个优秀的代码架构不仅易于开发和维护,而且是一门管理与执行的艺术. 这几年来经历了很多项目,对代码之间的强耦合及书写不规范,维护性差等问题深恶痛绝.在这里,通过仔细分析后,结合自己的 ...

  8. Yii2分页

    Yii中的分页功能主要由yii\web: Linkable接口.yii\widgets: LinkPager类和yii\data: Pagination类三个组成 yii\data: Paginati ...

  9. 39.Android版本小知识

    中文名----英文名----版本----对应API Level 棉花糖 Marshmallow - 6.0.1_r10 - API 23棉花糖 Marshmallow - 6.0.0_r5 - API ...

  10. BZOJ-1407 Savage 枚举+拓展欧几里得(+中国剩余定理??)

    zky学长实力ACM赛制测试,和 大新闻(YveH) 和 华莱士(hjxcpg) 组队...2h 10T,开始 分工我搞A,大新闻B,华莱士C,于是开搞: 然而第一题巨鬼畜,想了40min发现似乎不可 ...