BroadcastReceiver

  在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。

下面将详细的阐述如何发送Broadcast和使用BroadcastReceiver过滤接收的过程:

  首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。

  当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法。

  注册BroadcastReceiver有两种方式:

  静态注册:在AndroidManifest.xml中用标签生命注册,并在标签内用标签设置过滤器。

  <receiver android:name="myRecevice">    //继承BroadcastReceiver,重写onReceiver方法

    <intent-filter>

      <action android:name="com.dragon.net"></action> //使用过滤器,接收指定action广播

      </intent-filter>

  </receiver>

  动态注册:

  IntentFilter intentFilter = new IntentFilter();

  intentFilter.addAction(String);   //为BroadcastReceiver指定action,使之用于接收同action的广播

registerReceiver(BroadcastReceiver,intentFilter);

  一般:在onStart中注册,onStop中取消unregisterReceiver

  指定广播目标Action:Intent intent = new Intent(actionString);

  并且可通过Intent携带消息 :intent.putExtra("msg", "hi,我通过广播发送消息了");

  发送广播消息:Context.sendBroadcast(intent )

其中在动态注册中可将BroadcastReceiver的继承类进行封装,添加构造函数和BroadcastReceiver注册

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

public class BroadcastReceiverHelper extends BroadcastReceiver {

NotificationManager mn=null;
Notification notification=null;
Context ct=null;
BroadcastReceiverHelper receiver;

public BroadcastReceiverHelper(Context c){
ct=c;
receiver=this;
}

//注册
public void registerAction(String action){
IntentFilter filter=new IntentFilter();
filter.addAction(action);
ct.registerReceiver(receiver, filter);
}

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String msg=intent.getStringExtra("msg");
int id=intent.getIntExtra("who", 0);
if(intent.getAction().equals("com.cbin.sendMsg")){
mn=(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
notification=new Notification(R.drawable.icon, id+"发送广播", System.currentTimeMillis());
Intent it = new Intent(context,Main.class);
PendingIntent contentIntent=PendingIntent.getActivity(context,
0, it, 0);
notification.setLatestEventInfo(context,
"msg", msg, contentIntent);
mn.notify(0, notification);
}
}
}

然后再Activity中声明BroadcastReceiver的扩展对象,在onStart中注册,onStop中卸载

BroadcastReceiverHelper rhelper;
@Override
public void onStart(){
//注册广播接收器
rhelper=new BroadcastReceiverHelper(this);
rhelper.registerAction("com.cbin.sendMsg");
super.onStart();
}

@Override
public void onStop(){
//取消广播接收器
unregisterReceiver(rhelper);
super.onStop();
}

Android中BroadCastReceiver使用(整理)相关推荐

  1. android 增加一条广播,Android中BroadcastReceiver广播使用及注意点

    Android中的广播用途很广,是四大组件之一.在android中可以看到它的各种应用,从系统发出的广播,用户自定义的广播等. 这里详细记录下广播的分类以及使用方法. 广播,是由两方面组成一个流程:广 ...

  2. Android中BroadcastReceiver组件详解

    Android系统的4个组件终于还剩一种组件了BroadcastReceiver,这个组件是全局监听器,可以监听系统全局的广播消息,可以方便的实现系统中不同组件之间的通信 BroadcastRecei ...

  3. android 静态注册wifi广播,Android中BroadcastReceiver详解

    BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...

  4. android广播intent原理,Android中BroadcastReceiver详解

    BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...

  5. Android中BroadcastReceiver

    1.  BroadcastReceiver(广播接受者) 该组件接受被广播的intent,Context可以通过sendBroadcast()和sendOrderedBroadcast()方法实现广播 ...

  6. android中的broadcastReceiver

    主要代码 package com.bro; import android.app.Activity; import android.app.Dialog; import android.content ...

  7. android 定时响铃,Android 中利用广播接收器(BroadCastReceiver)来接收定时响铃的闹铃信息...

    刚开始做东西得时候很不了解android中一些组件的应用方法,找了一个闹钟的小例子来更好的理解广播的接收. 应用程序的界面是这样的,这个例子是用闹钟的制定与解除来穿插broadcast  Receiv ...

  8. android危险权限分组,Android 中的危险权限详细整理

    Android 中的危险权限详细整理 前言: Android 中有上百种权限,现在将所有的权限归为两类: 一类是普通权限 一类的危险权限 普通权限是指那些不会威胁到用户安全和隐私的权限,这部分权限系统 ...

  9. android 屏蔽 广播,Android中使用BroadcastReceiver打开和关闭WIFI

    由于自动化测试需要,我们希望能够简单的控制Android手机的WIFI开和关,而不是通过UI操作的方式.由于每个Android机型的UI都千差万别,所以需要找到一个通用得方式来满足我们的需求. 最开始 ...

最新文章

  1. 平滑重启_swoole服务平滑重启
  2. 比特币现金是否失去了去中心化
  3. 专为Android加载图片Fresco:详细图解SimpleDraweeView加载图片基础
  4. jquery queue ajax,如何通过jQuery和Queue发送ajax请求?
  5. java spi机制_Java是如何实现自己的SPI机制的? JDK源码(一)
  6. 使用GetDIBts/SetDIBits高速逐点处理 from http://blog.sina.com.cn/s/blog_552ad2090100e3eu.html...
  7. 对比Java和.NET多线程编程
  8. java 对象复制字段_利用Java反射机制实现对象相同字段的复制
  9. 四类文法以及上下文有(无)关的理解【转】
  10. Dinic算法(研究总结,网络流)
  11. kubeflow kfserving 详解
  12. python items和setdefault函数
  13. centors7 和 win7 修改开机顺序
  14. 「磨金石教育学员插画作业」什么是日系插画?
  15. SQL计算月环比、月同比
  16. JAVA系列之JVM优化
  17. Asp.Net之分页查询
  18. 在Firefox安装selenium
  19. 北大计算机系工业设计考研,2019北京大学工学院工业设计工程考研经验分享
  20. 盛天海电商:拼多多活动怎么去定位?

热门文章

  1. Hadoop生态系统的详细介绍
  2. 微信小程序判断服务器返回值,让微信小程序内置函数返回promise的方法
  3. 嵌入式linux系统移植的四大步骤_如何移植开源软件到嵌入式Linux系统
  4. java深拷贝和浅拷贝_Java 深拷贝浅拷贝 与 序列化
  5. STM32跑分?看看你的能跑多少分!
  6. java socket smtp_JAVA Socket实现smtp发送邮件
  7. 《c语言从入门到精通》看书笔记——第5章 常用的数据输入输出函数
  8. 《c语言从入门到精通》看书笔记——第2章 算法
  9. mysql解压版下载安装教程_mysql 解压版安装配置方法教程
  10. 服务器物理结构,物理 I/O 体系结构