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. 【niubi-job——一个分布式的任务调度框架】----niubi-job这下更牛逼了!

    niubi-job迎来第一次重大优化 niubi-job是一款专门针对定时任务所设计的分布式任务调度框架,它可以进行动态发布任务,并且有超高的可用性保证. 有多少人半夜被叫起来查BUG,结果差到最后发 ...

  2. android之SQLlite操作

    布局文件 创建了四个按键,分别对应增删改查 <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  3. 编写高质量代码改善C#程序的157个建议[匿名类型、Lambda、延迟求值和主动求值]

    前言 从.NET3.0开始,C#开始一直支持一个新特性:匿名类型.匿名类型由var.赋值运算符和一个非空初始值(或以new开头的初始化项)组成.匿名类型有如下基本特性: 1.既支持简单类型也支持复杂类 ...

  4. WCF入门(7)

    前言 前段时间忙着驾照科目二的考试,都没有机会碰自己的电脑.说起来也是第一次参加这么没信心的考试,不过好在过了. 再打个广告吧,昨天终于把下载的WCF视频全部传到了QQ群共享里面,群号37819043 ...

  5. 由DataGridTextColumn不能获取到父级DataContext引发的思考

    在项目中使用DataGrid需要根据业务动态隐藏某些列,思路都是给DataGrid中列的Visibility属性绑定值来实现(项目使用MVVM),如下 <DataGridTextColumn H ...

  6. Grovvy初识

    1.Groovy和Java对比 Groovy的松散的语法允许省略分号和修饰符 除非另行指定,Grovvy的所有内容都为public Grovvy允许定义简单脚本,同时无需定义正规的class对象 Gr ...

  7. go语言指针符号的*和&

    先看一段代码 先放一段代码,人工运行一下,看看自己能做对几题? package main import "fmt" func main() { var a int = 1 var ...

  8. linux编译ruby1.8.7 出现OPENSSL错误

    安装ruby-1.8.7出现编译错误.如下: ossl_pkey_ec.c:815: error: ‘EC_GROUP_new_curve_GF2m’ undeclared (first use in ...

  9. javascript与服务器1

    A. 通过在客户端设置Cookie,然后在服务器端读取它. 关于Cookie只说明一点, 它是存储在客户端机器上的一小块信息, 可以有客户端程序或服务器程序创建,并通过http传递.常用于跟踪用户在客 ...

  10. 自动化测试UI Test, Performance Test, Load Test 总结整理

    MSDN: 测试应用程序,Test apps early and often ,Improve Code Quality 推荐书: <Visual Studio 2015高级编程> < ...