gpt4 book ai didi

android - 在另一个应用程序中抑制/阻止 BroadcastReceiver

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:35 26 4
gpt4 key购买 nike

Go SMS 最近更新了一项新功能“禁用其他消息通知”。该功能会导致监听传入 SMS 广播的其他应用程序不触发。例如,我的应用程序 Shady SMS 监听传入的 SMS 广播以发送通知并实际提取和保存 SMS 消息。

启用 Go SMS 中的这一新功能后,Shady 不会发送通知或保存消息,最终根本不会响应传入的 SMS 广播。

Go SMS 必须以某种方式取消注册我的应用程序的广播接收器,因为无法中止传入的 SMS 广播。我的 Intent 过滤器设置为 android:priority="0"。

有什么想法吗?

最佳答案

GoSMS 确实将优先级设置为 2147483647,但这不是“最大”(它是最大的整数)- 它太高了。 SYSTEM_HIGH_PRIORITY 的 Android 文档为 1000 (http://developer.android.com/reference/android/content/IntentFilter.html#SYSTEM_HIGH_PRIORITY),应用优先级应低于此 - 它不是系统应用。

这会产生不可预测的行为。 (GoSMS 并不总是忽略其他应用程序通知 - abortBroadcast 仅在它们首先收到时才起作用,通常基于安装顺序,但并非总是如此。)系统级应用程序将执行,然后 Android 将尝试整理非系统应用程序。查看源码,执行顺序是按优先级排序的,但是对于999以上的应用或者相同优先级的应用,调用选择应用顺序是不一致的。它可能是按照安装顺序排列的,但系统更改可能会导致其他执行顺序(我在测试时多次看到这种情况)。

这确实应该由 GoSMS 修复(以及许多其他有错误的应用程序)。仅仅因为“优先级”是一个整数,并不意味着整数的最高值就是最高优先级。 (就像 Web URL 是一个字符串,但并非所有字符串值都是有效的。)此外,GoSMS 应该知道其他应用程序可能想要处理用户不可见的 SMS 消息。如果他们捕获它并将其显示给用户,那将毫无意义。

关于android - 在另一个应用程序中抑制/阻止 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com