android 发送广播_从0系统学Android--5.2 发送广播

从0系统学Android--52 发送广播

v2-8a1811431df25b4282da8c4e1ec10ad0_b.jpg

v2-4d605e433ed51b356432125e9ccc8958_b.jpg

本系列文章目录:更多精品文章分类

本系列持续更新中…. 初级阶段内容参考《第一行代码》

5.3 发送自定义广播

前面已经学习了如何接受广播了,下面来学习如何发送自定义广播,广播类型分为:标准广播和有序广播,下面分别来说一下这两种广播如何发送。

5.3.1 发送标准广播

首先我们先创建一个广播接收器,用来接收我们发送的自定义广播。

用静态广播来实现

public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,"接收到了",Toast.LENGTH_SHORT).show();}
}<receiverandroid:name="com.example.firstcode.fifty_chapter.norboardcast.MyReceiver"android:enabled="true"android:exported="true"android:permission="no"><intent-filter><action android:name="com.my_broadcast"/></intent-filter></receiver>这里 action 里面写自己要发送的广播的名字就可以了

随便在一个页面添加发送代码:

      buttonSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("com.my_broadcast");sendBroadcast(intent);}});

需要注意一点,上面的这种做法在 Android 8.0前是好用的,在 8.0 后进行了限制,限制通过静态注册来接受隐式广播详见。 其实对于部分隐式广播也是可以的比如开机广播

通过这个限制我们可以得到解决办法有两种:

1.不通过静态注册接收器,通过动态注册就可以了

2.通过静态注册接收器,但是发送的广播不要是隐式的。

第一种很简单,就是动态注册,这里不演示了,演示第二种:

 buttonSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("com.my_broadcast");// 明确指明要此广播要发送给的组件intent.setComponent(new ComponentName(NetChangeActivity.this, MyReceiver.class));NetChangeActivity.this.sendBroadcast(intent);}});

由于广播是通过 Intent 来进行传递的因此我们可以通过 Intent 来携带一些数据。

5.3.2 发送有序广播

广播是一种跨进程的通信,也就是说可以让不同的应用程序进行通信

如何发送有序广播呢?

 NetChangeActivity.this.sendOrderedBroadcast(intent,null);

这样就是发送有序广播了,第二个参数是与权限有关,传入 null 就可以了

那么如何设置接收器接受的顺序呢?

  <intent-filter android:priority="100"><action android:name="com.my_broadcast.MY_BROADCAST"/></intent-filter>

通过 android:priority 来设置。同样接收器在接收到消息后也可以通过 abortBroadcast() 来截取广播,让后面的接收器无法再接受到这条广播。

5.4 使用本地广播

前面我们发送和接受的广播全部属于系统全局广播,也就是说这些广播可以被系统中的其他应用程序接收到,并且我们也可以接受到来自其他任何应用的广播。这样容易引起安全问题。

为了解决这个问题,Android 引入了一套本地广播机制,使用这个机制广播只能够在程序内部进行传递。其实实现很简单就是通过 LocalBroadcastManager 来对广播进行管理。

下面我们就来列几个方法就可以了

LocalBroadCastManager localBroadCastManager = LocalBroadCastManager.getInstance(this)// 获取实例
// 发送广播的时候
Intent intent = new Intent("com.broadcst.syd");
localBroadCastManager.senBroadCast(intent);// 注册广播接收器
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.broadcst.syd");
localBroadCastManager.registerReceiver(localReceiver,intentFilter);// 取消注册
localBroadCastManager.unregisterReceiver(localReceiver);

其实和之前动态注册发送都是一样的,只是换了一个类来执行而已。

本地广播是无法通过静态注册的 ,这很好理解,静态注册是为了让应用程序还没有启动就能接受广播,而发送本地广播的时候,程序肯定已经启动了,因此完全不需要静态注册了。

注意这里的本地指的是当前应用程序内

使用本地广播优势:

  • 明确的知道发送的广播不会离开我们的应用程序,不用担心泄漏信息。
  • 同样其他广播也无法发送到我们程序内部,不用担心有安全漏洞。
  • 发送本地广播比发送系统全局广播将会更加高效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

31页官方PPT,回顾史上最大芯片WSE:科技的壮丽美感!

来源&#xff1a;芯潮2019年8月20日&#xff0c;在Hot Chips顶会上&#xff0c;发布了一款震惊世界的芯片&#xff1a;全球有史以来最大的计算机芯片wafer-scale engine &#xff08;WSE&#xff09;问世&#xff01;这款巨型芯片来自美国创企Cerebras&#xff0c;每边约22厘米…

Node.js npm 详解

一、npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分&#xff0c;不过只介绍了linux平台&#xff0c;如果是其它平台&#xff0c;有前辈写了更加详细的介绍。 npm的全称&#xff1a;Node Package Manager. ####&#xff08;1&#xff09;通俗的理解 其实从字面意…

html怎么在图片上添加文字_Image J基础操作:给图片添加文字和标注

对图片添加标注和文字是科研图片处理中一个非常基础的操作,Image J也可以进行这方面的处理。 01利用描边和填充添加 在绘制好选区(几乎只会用到箭头工具)之后选择:Edit-Draw(描边,快捷键Ctrl+D),使用事先设定好的颜色和粗细进行绘制;也可以填充设定好的颜色Edit-Fill(填充…

怎么更改sql的实例版本_学会复杂一点的SQL语句:Oracle DDL和DML

create&#xff1a;创建表创建用户创建视图创建表create table student(id int,score int) ;student后面与括号之间可以有空格可以没有创建用户create user liuyifei identified by 4852396;drop&#xff1a;删除整个表、删除指定的用户、删除指定的存储空间drop table table_n…

再谈智能

来源&#xff1a;人机与认知实验室1. 智能的产生1.1 智能生成机理有关智能生成的机理&#xff0c;一直是许多领域关注的焦点问题&#xff0c;涉及面之广、深很是少见&#xff0c;初步梳理可能会与这样几个最基本的问题有关&#xff1a;认知生成的机理、知识生成的机理、意…

的图片怎么循环渲染_十分钟教你做个炫酷的图片切换过度效果

做个炫酷的图片切换过度效果首先&#xff0c;今天是520节日。到了520这类为情侣准备的节日&#xff0c;小编都会感到一万点暴击……首先酸一波&#xff0c;搞点事情(蹭波热度)。给大家分享一个520特效页面&#xff1a;看完记得回来为小编点个赞哦&#xff01;这是案例请扫前言老…

8 线程安全且高效的单例模式

(1)双检查 if(instance null){//一次检查 synchronized (MySingleton.class) { if(instance null){//二次检查 instance new MySingleton(); } } (2)静态…

《自然》:修复AI神经网络的缺陷

来源&#xff1a;王宏琳科学网博客我在上一篇《海外观察》博客中&#xff0c;介绍了纽约大学马库斯教授和戴维斯教授的新书《重启 AI&#xff1a;构建我们可以信任的人工智能》和图灵奖得主朱迪亚•珀尔的著作《为什么&#xff1a;关于因果关系的新科学》。这两本书都分析了以深…

python魔法方法与函数_在Python中画图(基于Jupyter notebook的魔法函数)

这篇文章主要介绍了在Python中画图(基于Jupyter notebook的魔法函数),文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 先展示一段相关的代码&#xff1a; #we test the accuracy of knn and find the k which ma…

三. 自动化测试用例设计

1. 主要内容&#xff1a; 2. 手工测试用例与自动化测试用例区别 目前自动化测试更多的时候是定位在冒烟测试和回归测试&#xff1b; 冒烟测试执行的是主体功能点的用例。回归测试执行全部或部分的测试用例。3. 测试类型 4. 异常 5. WebDriver错误截图 get_screenshot_as_f…

c json保存整型数组,您如何存储“ int”? NSMutableArray *或NSMutableDictionary *中的值?整数形式的JSON数据的长期问题。...

How do you store "int" values in an NSMutableArray or NSMutableDictionary? Chronic problems with JSON data that come in as integers.Should I try to store these integers as NSNumber objects or just as strings that contain the integer?How dangero…

c++卸载工具_win7系统如何卸载office2007兼容包

win7系统如何卸载office2007兼容包?office2007是一款热门的办公软件&#xff0c;但有的朋友不习惯使用office2007&#xff0c;但是一些说电脑安装office2007软件后&#xff0c;想要更换其他版本的话&#xff0c;此前需要将office2007卸载掉&#xff0c;不知怎么卸载office2007…

人工智能伦理如何设定,从种群层面看人类的知识积累和进化

前言&#xff1a;9月份中宣部出版局《中国图书评论》对《崛起的超级智能》进行了推荐和评论&#xff0c;对其中阐述的种群知识库扩展观点给予了重点关注。应该说种群知识库扩展是互联网大脑架构不断发展的抽象推论&#xff0c;这个推论对于人工智能及其伦理的建立也应有相应的价…

[转] 三种Python下载url并保存文件的代码

原文 三种Python下载url并保存文件的代码 利用程序自己编写下载文件挺有意思的。 Python中最流行的方法就是通过Http利用urllib或者urllib2模块。 当然你也可以利用ftplib从ftp站点下载文件。此外Python还提供了另外一种方法requests。 来看看三种方法是如何来下载zip文件的&am…

北理课程 - 鸢尾花

刚开始尝试机器学习 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a…

text 两端对齐 小程序_小程序实现文字两端对齐

我们知道&#xff0c;text-align: justify;对最后一行无效&#xff0c;当有一个段落而最后一行只有两个字时&#xff0c;text-align: justify;的效果是前面N行两端对齐&#xff0c;最后一行居左&#xff0c;这样有利于用户的视觉体验&#xff0c;但是当我们只有一行文本&#x…

python可以这样学读后感_Python基础教程的读后感10篇

《Python基础教程》是一本由Magnus Lie Hetland著作&#xff0c;人民邮电出版社出版的平装图书&#xff0c;本书定价&#xff1a;69.00元&#xff0c;页数&#xff1a;471&#xff0c;文章吧小编精心整理的一些读者的读后感&#xff0c;希望对大家能有帮助。 《Python基础教程》…

光通信的再思考:5G流量爆发下的数据密度革命

来源&#xff1a;未来智库1.投资要件区别于市场的观点&#xff1a;&#xff08;1&#xff09;市场对 5G 时代流量爆发的认知不足。市场认为当前大带宽高流量新应用的爆发趋势尚不明显&#xff0c;当前流量增长需求不清。我们认为&#xff0c;5G 时代的流量的爆发将会是数十倍的…

玩家可以输入辅助指令_最后生还者 第二部辅助功能详解 盲人玩家也能玩

顽皮狗首席系统设计师Matthew Gallant&#xff0c;今天在Playstation Blog公开了《最后生还者 第二部》中辅助功能的详情。他们表示从设计之初&#xff0c;他们就希望有更多的粉丝能够体验到这款作品。在《神秘海域4&#xff1a;盗徒末路》的基础上&#xff0c;《TLOU2》提供了…