BroadcastReceiver(广播接收器)是Android中的四大组件之一,专注于接收广播通知信息,并做出对应处理的组件。

广播接收主要有两种,一种是用户发送的广播,另外一种是系统的广播消息的接收,包括用户来电、用户短信和拦截黑名单电话等。这里我们所要说的广播接收是监听我们自己注册的普通广播的一个接收。

使用广播接收需完成:
        (1)注册广播:注册方式有两种,一种是在AndroidManifest.xml文件中定义,指定该BroadcastReceiver所响应的Intent的Action;另一种是使用代码进行指定,调用BroadcastReceiver的Context的registerReceiver(BroadcastReceiver receiver, IntentFilter filter)方法指定;这两种注册方式都需要IntentFIlter。
        (2)发送广播:调用Context的sendBroadcast来发发送指定的BroadcastReceiver,也就是使用Intent来传递注册时用到的Action。
        (3)接收广播:当发送的广播被广播接收器监听到之后,BroadcastReceiver的onReceive()方法将会被触发,从而在该方法中显示广播所携带的信息或者进行一些简单的操作。

为此我也做了一个简单的Dome,按照惯例先来看一下最终效果图:

MainActivity.class

package com.example.xiaolijuan.broadcastdome;import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/*** @author: xiaolijuan* @description:* @projectName: BroadcastDome* @date: 2016-01-20* @time: 23:28*/
public class MainActivity extends Activity implements View.OnClickListener {private Button btn;private TextView textview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = (Button) findViewById(R.id.btn);textview = (TextView) findViewById(R.id.code);btn.setOnClickListener(this);RegisterBroadCase();}/*** 广播注册*/private void RegisterBroadCase() {submitReceiver receiver = new submitReceiver();LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getApplicationContext());IntentFilter filter = new IntentFilter();filter.addAction(SecondActivity.INTEGRAL_BROADCAST);lbm.registerReceiver(receiver, filter);}public class submitReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String intentAction = intent.getAction();if (intentAction.equals(SecondActivity.INTEGRAL_BROADCAST)) {textview.setText(intent.getExtras().getString("afterCode"));}}}@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.putExtra("code", textview.getText());    //获取积分,将他保存在intent里面intent.setClass(MainActivity.this, SecondActivity.class);startActivity(intent);}
}

SecondActivity.class

package com.example.xiaolijuan.broadcastdome;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;/*** @author: xiaolijuan* @description:* @projectName: BroadcastDome* @date: 2016-01-20* @time: 23:28*/
public class SecondActivity extends Activity implements View.OnClickListener{public static final String INTEGRAL_BROADCAST = "INTEGRAL_BROADCAST";TextView currentCode;EditText editText;Button sureBtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);currentCode = (TextView) findViewById(R.id.currentCode);    //当前的积分,把传过来的数据绑定在textview控件currentCode.setText(getIntent().getStringExtra("code")); //设置当前的积分editText = (EditText) findViewById(R.id.editText);sureBtn = (Button) findViewById(R.id.sure);sureBtn.setOnClickListener(this);}/*** 发送广播信息*/public void sendMessage(String afterCode) {Intent intent = new Intent();intent.putExtra("afterCode", afterCode);intent.setAction(INTEGRAL_BROADCAST);LocalBroadcastManager l = LocalBroadcastManager.getInstance(SecondActivity.this);l.sendBroadcast(intent);}@Overridepublic void onClick(View v) {String afterCode = editText.getText().toString();if(TextUtils.isEmpty(afterCode)) {Toast.makeText(SecondActivity.this, "更改积分不能为空!", Toast.LENGTH_SHORT).show();} else {currentCode.setText(afterCode);sendMessage(afterCode);}}
}

在使用的时候,需要注意:使用了LocalBroadcastManager注册广播之后,在发送广播的时候要使用LocalBroadcastManager.sendBroadcast(intent),否则会接收不到广播。

项目源码 点击下载

探索广播接收器的使用相关推荐

  1. Android组件系列----BroadcastReceiver广播接收器

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  2. Android安全问题 抢先接收广播 - 内因篇之广播接收器注册流程

    导读:本文说明系统是如何注册动态广播以及静态广播,这里主要注意其注册的顺序 这篇文章主要是针对我前两篇文章 android安全问题  抢先开机启动 - 结果篇 android安全问题  抢先拦截短信 ...

  3. Broadcast Receiver广播接收器

    1.概述 广播接收器不仅能接受来自系统的内容,也可以接受来自其他app的内容.广播分为标准广播和有序广播. 2.标准广播 一种完全异步执行的广播,在广播发出之后几乎所有的广播接收器都在同一时刻接受到广 ...

  4. android 收不到短信广播,android – 短信广播接收器没有得到textmessage

    我做了什么 大家好,我正在创建一个短信广播接收器,我刚刚用本教程建立了一个:Broadcasttutorial.在我完成代码之后,我更新了我的Manifest.之后我将短信从我的另一部手机发送到我的手 ...

  5. 《第一行代码》学习笔记19-广播接收器Broadcast_Receiver(2)

    1.解决广播的安全性问题,Android引入了一套本地广播机制,使用该机制发出的广播只能够在应用程序内部进行传递,并且广播接收器只能 接收来自本应用程序发出的广播. 2.本地广播无法通过静态注册来接收 ...

  6. 《第一行代码》学习笔记18-广播接收器Broadcast_Receiver(1)

    1.网络通信原理,在一个IP网络范围内最大的IP地址是被保留作为广播地址来使用的.某个网络的IP 范围是192.168.0.XXX, 子网掩码是255.255.255.0,则该网络的广播地址是192. ...

  7. Android应用程序注冊广播接收器(registerReceiver)的过程分析

    前面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/公布机制,因此,使用这样的消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息事实上就是注冊广播接收器, ...

  8. android广播接收器

    Android程序创建广播接收器继承BroadcastReceiver Android广播接收器需要在AndroidManifest.xml文件中声明: <recevie android:nam ...

  9. Android 优化电池使用时间——根据需要操作广播接收器

    原文参见此处 根据需要操作广播接收器 监控设备状态变化的最简单方法就是,为您监控的每种状态创建 BroadcastReceiver 并在应用清单中逐一进行注册.然后,您只需根据当前设备状态在每个接收器 ...

最新文章

  1. kFreeBSD有活过来的迹象?UbuntuBSD
  2. sharepoint webpart 样式修改
  3. Webpack进阶(一) tree shaking与不同mode
  4. “约见”面试官系列之常见面试题第二十六篇之vue-router的hash和history(建议收藏)
  5. 论文浅尝 | 基于知识图谱中图卷积神经网络的推荐系统
  6. kcf算法中cos_window是什么意思_知网/维普查重系统算法介绍(史上最详细)
  7. Java 代码优化工具-lombok
  8. jdk版本低于1.7 waterdrop 打不开解决
  9. 请教各位前辈一个问题。
  10. 程序设计方法和程序分析
  11. 淘宝闲鱼等电商平台数据采集软件
  12. watch和computer的区别
  13. 《图像处理、分析与机器视觉 第四版》 摄像机 相机概述——学习笔记
  14. python网络编程——HTTP客户端
  15. m基于ACO蚁群优化的FCM模糊聚类算法matlab仿真
  16. 浏览器获取MAC地址
  17. 利用Java计算多少次纸才能对折出珠峰高度
  18. 《非暴力沟通》全文-电子版
  19. 将execl文件拆分为多个excel文件
  20. 浙江大学MBA提前批面试高频关心问题集锦:迹象表明2023提面快了!

热门文章

  1. Ubuntu无法输入管道符及其他符号
  2. WIFI Direct 标准 连接
  3. 设计稿标注首屏线的确定始末
  4. 短视频app源码开发:仿抖音短视频热门页面的实现
  5. 五层协议的网络体系结构要点_计算机体系结构要点第一部分性能评估
  6. 成渝地区微型计算机产业,2020届广州市高三年级调研测试文综地理试题(含答案).doc...
  7. adobexd怎么录屏_了解如何使用 Adobe XD 预览原型和录制交互。 - Adobe XD 用户指南...
  8. 修改debian9 stretch源
  9. 股票连续跌停后开板表现
  10. 【考研plog】目标院校整理第二弹-复试分数线篇