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

    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. }
    复制代码


           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. }
    复制代码


            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. }
    复制代码


           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>

    路漫漫其修远兮 吾将上下而求索
  • 相关阅读:
    数据结构复习代码——线索二叉树的实现
    数据结构复习代码——非递归实现二叉树的遍历方法
    数据结构复习代码——递归实现二叉树的创建、前中后序遍历、层次遍历、求节点个数、求树高
    mount参数介绍
    mysqlslap基准测试
    计算shell脚本执行时间
    Linux中使用pigz工具更快的压缩和解压文件
    mount参数介绍
    linux 硬链接与软链接
    fsck
  • 原文地址:https://www.cnblogs.com/hudabing/p/3731963.html
Copyright © 2020-2023  润新知