关于安卓5.0短信接收的疑问?为什么不能截断SMS_RECEIVED_ACTION广播?

发布于 2022-09-04 20:15:38 字数 551 浏览 24 评论 0

阅读安卓5.0的源代码发现,框架层接收到短信后,通过dispatchIntent方法最后调用sendOrderedBroadcastAsUser方法来发送广播,这样子理论上来说都是发送的有序广播,并没有所谓的无序广播。那么和网上的说法发送两条广播一条是发送给默认短信应用的有序广播,一条是发给所有人的无序广播的说法不一致

接下来,我进行了试验测试,
我写了两个应用A,B,都注册短信广播(都不是默认短信应用),并且A的广播优先级高于B,A和B都获取短信后调用abortBroadcast截断广播。并且在A,B广播中都调用getResultExtras和setResultExtras方法,获取和设置广播结果,A设置一个数字100,B设置一个数字500,

模拟发送短信测试后,发现A,B应用都能获取到短信。。。
我又进行测试,通过getResultExtras发现A,B都能获取到非空的budle对象,且B应用输出数字0,A应用输出数字500,说明B确实优先A收到的短信,但是截断不成功。
理论上说如果接收的是无序广播,那么getResultExtras方法返回的值必然是空,而非空,则代表是有序广播,那么无法截断又如何解释呢。。。。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文