Android中BroadCastReceiver使用(整理)
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使用(整理)相关推荐
- android 增加一条广播,Android中BroadcastReceiver广播使用及注意点
Android中的广播用途很广,是四大组件之一.在android中可以看到它的各种应用,从系统发出的广播,用户自定义的广播等. 这里详细记录下广播的分类以及使用方法. 广播,是由两方面组成一个流程:广 ...
- Android中BroadcastReceiver组件详解
Android系统的4个组件终于还剩一种组件了BroadcastReceiver,这个组件是全局监听器,可以监听系统全局的广播消息,可以方便的实现系统中不同组件之间的通信 BroadcastRecei ...
- android 静态注册wifi广播,Android中BroadcastReceiver详解
BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...
- android广播intent原理,Android中BroadcastReceiver详解
BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...
- Android中BroadcastReceiver
1. BroadcastReceiver(广播接受者) 该组件接受被广播的intent,Context可以通过sendBroadcast()和sendOrderedBroadcast()方法实现广播 ...
- android中的broadcastReceiver
主要代码 package com.bro; import android.app.Activity; import android.app.Dialog; import android.content ...
- android 定时响铃,Android 中利用广播接收器(BroadCastReceiver)来接收定时响铃的闹铃信息...
刚开始做东西得时候很不了解android中一些组件的应用方法,找了一个闹钟的小例子来更好的理解广播的接收. 应用程序的界面是这样的,这个例子是用闹钟的制定与解除来穿插broadcast Receiv ...
- android危险权限分组,Android 中的危险权限详细整理
Android 中的危险权限详细整理 前言: Android 中有上百种权限,现在将所有的权限归为两类: 一类是普通权限 一类的危险权限 普通权限是指那些不会威胁到用户安全和隐私的权限,这部分权限系统 ...
- android 屏蔽 广播,Android中使用BroadcastReceiver打开和关闭WIFI
由于自动化测试需要,我们希望能够简单的控制Android手机的WIFI开和关,而不是通过UI操作的方式.由于每个Android机型的UI都千差万别,所以需要找到一个通用得方式来满足我们的需求. 最开始 ...
最新文章
- 平滑重启_swoole服务平滑重启
- 比特币现金是否失去了去中心化
- 专为Android加载图片Fresco:详细图解SimpleDraweeView加载图片基础
- jquery queue ajax,如何通过jQuery和Queue发送ajax请求?
- java spi机制_Java是如何实现自己的SPI机制的? JDK源码(一)
- 使用GetDIBts/SetDIBits高速逐点处理 from http://blog.sina.com.cn/s/blog_552ad2090100e3eu.html...
- 对比Java和.NET多线程编程
- java 对象复制字段_利用Java反射机制实现对象相同字段的复制
- 四类文法以及上下文有(无)关的理解【转】
- Dinic算法(研究总结,网络流)
- kubeflow kfserving 详解
- python items和setdefault函数
- centors7 和 win7 修改开机顺序
- 「磨金石教育学员插画作业」什么是日系插画?
- SQL计算月环比、月同比
- JAVA系列之JVM优化
- Asp.Net之分页查询
- 在Firefox安装selenium
- 北大计算机系工业设计考研,2019北京大学工学院工业设计工程考研经验分享
- 盛天海电商:拼多多活动怎么去定位?
热门文章
- Hadoop生态系统的详细介绍
- 微信小程序判断服务器返回值,让微信小程序内置函数返回promise的方法
- 嵌入式linux系统移植的四大步骤_如何移植开源软件到嵌入式Linux系统
- java深拷贝和浅拷贝_Java 深拷贝浅拷贝 与 序列化
- STM32跑分?看看你的能跑多少分!
- java socket smtp_JAVA Socket实现smtp发送邮件
- 《c语言从入门到精通》看书笔记——第5章 常用的数据输入输出函数
- 《c语言从入门到精通》看书笔记——第2章 算法
- mysql解压版下载安装教程_mysql 解压版安装配置方法教程
- 服务器物理结构,物理 I/O 体系结构