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. unity3d 纹理动画

    不知道大家有没有玩过赛车游戏 赛车游戏的跑道有路标,如下图 玩过赛车游戏的都知道,大多数赛车游戏的路标是会动的,如上图,它会从右往左运动 不会发动态图,大家脑补一下吧 没有玩过赛车游戏的也不要紧,大家 ...

  2. c# r3 inline hook

    前言 老婆喜欢在QQ游戏玩拖拉机,且安装了一个记牌器小软件,打开的时候弹出几个IE页面加载很多广告,于是叫我去掉广告.想想可以用OD进行nop填充,也可以写api hook替换shellexecute ...

  3. SEO入门教程

    什么是SEO? SEO的中文名叫做搜索引擎优化,主要的作用是将网站的关键词优化到搜索引擎靠前的位置 其中关键词可以划分成以下这几类: 主关键词,长尾关键词,相关关键词 例如:主关键词:网页 长尾关键词 ...

  4. 通过smtp协议简单实现邮件发送

    使用到的类: ①SmtpClient--发送邮件的类(using System.Net.Mail;) ②MailMessage--初始化邮件的类 ③ NetworkCredential--身份验证的类 ...

  5. TS

    //html文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  6. js常用插件

    1.jQuery Shortcuts 是个超轻量级的方法,使用 jQuery 来绑定快捷键(热键). 2.Underscore封装了常用的JavaScript对象操作方法,用于提高开发效率. 3.Kn ...

  7. 【HDU 4150】Powerful Incantation

    题 题意 给你s1,s2两个字符串,求s1中有多少个s2 代码 #include<stdio.h> #include<string.h> int t,len1,len2,pos ...

  8. BZOJ-2037 Sue的小球 DP+费用提前

    似乎很早时学长考过很类似的? 2037: [Sdoi2008]Sue的小球 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 558 Solved: 300 ...

  9. 【poj2079】 Triangle

    http://poj.org/problem?id=2079 (题目链接) 题意 求凸包内最大三角形面积 Solution 旋转卡壳. 只会n²的做法,但是竟然过了.就是枚举每一个点,然后旋转卡壳另外 ...

  10. HDU 4901 The Romantic Hero

    The Romantic Hero Time Limit: 3000MS   Memory Limit: 131072KB   64bit IO Format: %I64d & %I64u D ...