首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android基础总结(4)——广播接收器

Android提供了一整套完整API,允许应用程序自由地发送和接收广播。发送广播就是借助之前了解过Intent,接收广播则需要用到广播接收器(Broadcast Receiver)。....有序广播:Ordered broadcast,是一种同步执行广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播,当这个广播接收器逻辑执行完毕后,广播才会继续传递。...所以此时广播接收器是有顺序,优先级高广播接收器可以先接受到广播消息,并且前面的广播接收器还可以截断正在传递广播,这样后面的广播接收器就无法收到广播消息了。...3、广播接收器注册   广播接收器可以自由地对自己感兴趣广播进行注册,这样才能在有相应广播发出时,广播接收器就能够收到该广播,并在内部进行相应逻辑处理。...这种情况下,我们一般不用内部类方法来定义广播接收器,因为需要在AndroidManifest.xml中进行注册时需要用到我们自定义广播接收器类名。

1K100
您找到你想要的搜索结果了吗?
是的
没有找到

安卓应用安全指南 4.2.2 创建使用广播接收器 规则书

所以不要认为收到意图在没有任何验证情况下,是完全安全。 内部广播接收机具有一定程度风险,因此还需要验证接收意图安全性。 请参考“3.2 小心和安全地处理输入数据”。...AndroidManifest.xml中权限定义/权限请求声明不足以保护,因此请参阅“5.2.1.2 如何使用内部定义签名权限在内部应用之间进行通信”。...对于广播敏感信息,只有可靠广播接收器可以接收它,而其他广播接收器则不能。 以下是广播发送方法一些示例。 方法是,通过使用显式意图,将广播仅仅发送给预期可靠广播接收器,来固定地址。...4.2.2.6 粘性广播中禁止包含敏感信息(必需) 通常情况下,广播由可用广播接收器接收后会消失。...当粘性广播变得不必要时,可以随时用removeStickyBroadcast()任意删除它。 由于在预设情况下,粘性广播被隐式意图使用。

79930

Android利用广播接收器实现自动填充短信验证码

今天博主带给小伙伴们一个小功能,就是利用广播接收器实现自动填充短信验证码,话不多说,我们先看看如何去实现这个小功能。...首先我们需要新建一个名为SMSBroadcastReceiver广播接收器,代码如下: public class SMSBroadcastReceiver extends BroadcastReceiver...{ System.out.println(m.group()); return m.group(0); } return null; } } 至此我们短信广播接收器就完成了...之后我们需要完成注册广播接收器以及填写验证码代码,完成代码如下: private void initSmsReader(){ public static final String SMS_RECEIVED_ACTION...(); //实例化过滤器并设置要过滤广播 IntentFilter intentFilter = new IntentFilter(SMS_RECEIVED_ACTION);

4.3K20

罗技鼠标接收器坏了后用其他接收器配对方法

本文介绍罗技鼠标在丢失、损坏其自身原有的接收器后,将另一个新接收器与原有鼠标相互配对方法。   ...,这个不影响);如果有的话就说明鼠标支持优联(也就是Unifying,这个功能可以使得一个接收器和6个不同鼠标、键盘等罗技设备连接),如果没有的话就是支持普通2.4GHzUSB接收器。...其次是新接收器——如下图所示,如果接收器上具有左侧那个接收器上橙色标志,则说明是支持优联接收器,即可以最多与6个不同罗技设备连接;而如果是右侧那样接收器,不带有优联标识,则说明只支持一个单独设备连接...在我这里,原本鼠标的接收器(也就是上图右侧那个)被摔坏了,所以就用另一个鼠标的接收器(也就是上图左侧那个)作为原本鼠标的接收器(这样子的话,完成操作后,上图左侧那个新接收器就可以同时接受我这里两个鼠标的信号了...随后,软件将接收到我们刚刚打开鼠标的信号,并出现如下图所示界面(如果没有接收到信号,可以多次关闭、打开鼠标)。此时,我们移动一下要配对鼠标,看看屏幕中是否出现光标移动情况

1.5K10

安卓应用安全指南 4.2.1 创建使用广播接收器 示例代码

使用广播接收器风险和对策,根据收到广播类型而有所不同。 你可以在以下判断流程中找到你广播接收器接收应用无法检查发送广播应用包名称,它是链接伙伴所需。...表 4.2:广播接收器类型定义: 类型 定义 私有 只能接收来自相同应用广播广播接收器,所以是最安全 公共 可以接收来自未指定大量应用广播广播接收器 内部 只能接收来自其他内部应用广播广播接收器...(),动态注册和注销广播接收器 4.2.1.1 私有广播接收器 私人广播接收器是最安全广播接收器,因为只能接收到从应用内发送广播。...公共广播接收器是可以从未指定大量应用程序接收广播广播接收器,因此有必要注意,它可能从恶意软件接收广播。...内部广播接收器广播接收器,它将永远不会收到从内部应用以外发送任何广播

45020

安卓应用安全指南 4.2.3 创建使用广播接收器 高级话题

即使在相同应用中将广播发送到私有接收器,其他应用中公共接收器也可能会意外调用。 这就是为什么禁止指定带有意图过滤器定义exported ="false"。 以下两张图展示了意外调用发生情况。...在这种情况下,敏感信息可能会从应用 A 发送到 B。当应用 B 是恶意软件时,会导致敏感信息泄漏。 当发送有序广播时,它可能会收到意外结果信息。...广播由多个广播接收器同时接收。 这与有序广播有所不同。 广播被允许由特定广播接收接收。 有序 有序广播特点是,可接收广播接收器依次接收广播。 优先级较高广播接收器较早收到。...当广播被传送到所有广播接收器广播接收器调用abortBroadcast(),广播将消失。 广播被允许由声明了特定权限广播接收器接收。...广播特征行为 普通 有序 粘性 粘性有序 由权限限制广播接收器可以接收广播 OK OK - - 从广播接收器获得过程结果 - OK - OK 使广播接收器按顺序处理广播 - OK - OK 稍后收到已经发送广播

97310

短信广播接收

比较重要一个广播事件,短信 界面布局,比如播放视频,默认是横屏全屏,清单文件中进行设置, 在节点设置屏幕朝向属性,android:screenOrientation=”landscape...()方法,拿到数据,得到Bundle对象 调用Bundle对象get(key)方法,得到byte[],参数:key这里填 “pdus”,pdu是短信数据格式,强转成Object[]数组 循环byte...[]数组 for(Object pdu:pdus), 每一个循环里面调用SmsMessage类createFromPdu(pdu),强转Object成 byte[],此时会得到SmsMessage对象...调用SmsMessage对象getMessageBody()方法,得到短信内容 调用SmsMessage对象getOriginatingAddress()方法,得到发件人 调用abortBroadcast...()方法,直接终止掉这条广播 清单文件中intent-filter节点上,可以设置优先级属性,android:priority=”1000” 广播接收优先级,-1000优先级最低,1000优先级最高

2.4K40

代码注册广播接收者&利用广播调用服务方法

利用广播调用服务里面的方法,间接方式调用服务内部方法,与现实中差不多,请媒体曝光 主界面里面 在界面创建时候开启一下服务普通startService()方法 发送一条广播出去 获取Intent对象...类继承系统Service类 添加一个自定义服务方法callServiceMethod(),我们目的要调用方法 新建一个内部类MyReceiver继承系统Receiver类 广播接收者既能通过清单文件注册...,也可以通过代码方式注册,这是四大组件中唯一特殊一个 在MyService中创建一个MyReceiver成员变量 在服务创建时候,注册广播接收者,在onCreate()方法里面 调用registerReceiver...会调用MyReceiver对象onReceive()方法,在这个方法里面可以去调用服务私有方法,比如callServiceMethod() 当服务销毁时候,解除注册广播接收者,在onDestroy...receiver; @Override public IBinder onBind(Intent intent) { return null; } //服务创建时候注册广播接收

99320

Android BroadcastReceiver接收收到短信广播

3、使用场景:   ①当手机没有电时,会告知用户“电量低”广播信息。可以做到正在使用app就会接收到这个广播消息,如果是游戏可能是提醒保存数据,如果是正在使用工作软件,可能提醒接上电源。...4、一个程序发出广播信息,一个程序接收广播信息,所以至少需要2个程序才能完成一发一收。发一方,叫广播发送方;收一方,叫广播接收者。   5、广播接受者需要进行注册。...动态注册,静态注册(在AndroidManiFest文件中)   二、项目实践 【步骤】   ①定义广播接受者   ②进行注册,添加过滤器 intent-filter,接收特定广播   ③重写onReceiver...【小结】   ①这里是接收系统广播,也可以自己定义广播。以及可以添加很多功能,接收广播进行特定操作。   ...②广播必须添加过滤器,对特定广播进行接收   ③如果是接收系统广播要进行权限申请,5.0之后一定要进行动态权限申请才可以 以上就是本文全部内容,希望对大家学习有所帮助。

3.8K20

广播注册、发送和接收过程

-诸如此类四大组件启动过程经常在面试中被问到 一。广播注册过程(动态注册) ?...1)静态注册在应用安装时由PackageManagerService来完成注册过程 2)IIntentReceiver是一个Binder接口,用于广播跨进程通信,它在LoadedApk.ReceiverDispatcher.InnerReceiver...中实现 3)注册广播是一个跨进程过程,需要具有跨进程通信功能IIntentReceiver 4)粘性广播是存储在AMS中 5)ReceiverList继承自ArrayList,用来存储广播接收者...6)AMS接收广播时就可以从mReceiverResolver中找到对应广播接收者了,从而达到了注册广播目的 二。...广播发送和接收过程 第一步。ContextImpl到AMS调用过程 ? 第二步。AMS到BroadcastReceiver调用过程 ?

93510

Android 广播「BroadcastReceiver」接收不到「Intent」信息

BroadcastReceiver & Intent 我们在工作过程中,经常会使用到 BroadcastReceiver 机制,用来向活动发送消息,更新服务内数据信息。...但是我在这一过 程中发生了一个低级错误,我向广播发送两种 Action 类型 Intent,结果始终接收不到,或者只能接收到一个 Intent 信息 预测效果: 进度条 但是实际: 进度条满了之后无法关闭...: ---- 进过排查后我发现了问题所在: 在广播注册地方,我只为 Receiver 添加了修改进度条 Action ,而没有添加打开、关闭窗口 Action: private fun...intent) } 可以看到 我只添加了 intentFilter.addAction(IntentManager.ACTION_TYPE_THREAD) 但是我在服务中,却是分两个 Action 发出,...测试 Demo 地址:点击前往 https://github.com/FishInWater-1999/android_four_major_components 如果也解决了你问题,不妨给个赞呗,么么哒

1.3K30

安卓开发_深入理解广播机制

这个广播跟我们传统意义中电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收如何处理。...原因如下: (1)广播接收器生命周期是非常短暂,当广播接收器接收广播时开始创建,而执行完onReceive(context,intent)方法后就销毁 (2)默认情况下,广播接收器也是运行在UI线程中... 应用程序退出之后,相应广播接收器是否还能接受广播情况(比如一个应用程序里有一个广播接收器接收是“收到短信”广播,当应用程序退出后,还能收到这个广播么?)...,则一个广播发过来之后,优先级为100广播接收器先接受,然后优先级0广播接收器接收, 最后优先级为-100广播接收器再接受,但是当优先级为100广播接收器onReceive()方法内部执行了abortBroadcast...后两个广播接收器都无法再接受此广播了 4、粘性广播(查了下子类,粘性广播已被放弃,过时) 粘性广播特点为: 会一直保留到广播事件结束,没有所谓10秒限制 但是当接收广播广播接收器onReceive

1.4K70

详解GPS欺骗 | 针对导航系统「致命攻击」

为了预防GPS欺骗,我们首先要了解对手如何破坏GPS信号。...有针对性GPS欺骗可导致通信中断、金融交易混乱、电力系统瘫痪等。可以相像,最严重情况,GPS欺骗攻击者甚至可以操纵信号,让飞机或轮船发生相撞。...5 GPS欺骗技术原理 Humphreys团队是如何做到?在通常运行机制中,GPS接收器通过一次计算与多个卫星距离来判断自身位置。...这些卫星广播民用和军用两种PRN码,其中,民用PRN码是不加密且在卫星数据库中公开,而军用PRN码是被加密,只有当GPS接收器具备其秘密密钥才可接收解码数据。...或者,接收器可以先接收信号中不可预测或解码那部分,之后,等待发送方广播有数字签名加密密钥来验证信号源。

3K80

Broadcasts详解「建议收藏」

静态注册广播接收器 如果你在manifest中注册一个广播接收器,且应用程序没有运行,系统就会在广播发送时启动你应用程序。...context有效,动态注册广播接收器就能接收广播。...2、 sendBroadcast(Intent):标准广播发送方式,以随机顺序发送广播给所有接收器。这种广播更高效,但意味着接收器不能读取其他接收器结果,也不能中止广播。...只有在其manifest中申请了权限许可接收者(并且在危险情况下被授予许可)才能接收广播。...2、 如果许多应用程序在其manifest中注册接收相同广播,这可能导致该系统启动大量应用程序,从而对设备性能和用户体验造成重大影响。为了避免这种情况,尽量用动态注册替代静态注册。

74810

【Android】Broadcasts详解

如果想要具体了解如何如何读取一个intent并且获取附加字段,参阅Intents and Intent Filters 参阅Android SDK中BROADCAST_ACTIONS.TXT来了解所有系统广播...静态广播接收器 要定义一个静态广播接收器,执行下面的步骤: 当应用程序安装时候,软件包管理器会在系统中注册广播接收器。...动态广播接收器 要注册一个上下文相关动态广播接收器,执行以下步骤: 对进程状态影响 你广播接收器状态会影响它所在进程状态,转而会影响进程被系统杀死可能性。...为了避免这种情况,你要么调用goAsync()(如果你希望能够长时间在后台线程中运行广播接收器),要么在接收器中使用JobScheduler调度一个JobService。...如果许多应用都在应用清单中注册接收同一个广播,会造成系统启动大量应用,对硬件性能和用户体验造成影响。为了避免这种情况,优先考虑上下文相关广播接收器,而不是在应用清单中定义。

73820
领券