Noa*_*man 9 sms android broadcastreceiver
最近使用新功能"禁用其他消息通知"更新了SMS.该功能使得收听传入SMS广播的其他应用程序不会触发.例如,我的应用程序Shady SMS监听传入的SMS广播以发送通知并实际提取和保存SMS消息.
当启用Go SMS中的这一新功能时,Shady不会发送通知或保存最终根本不响应传入SMS广播的消息.
Go SMS必须以某种方式取消注册我的应用程序的广播接收器,因为传入的SMS广播不能被中止.我的意图过滤器设置为android:priority ="0".
有什么想法吗?
Jim*_*Jim 21
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消息.如果他们捕获它并将其显示给用户,那就没有意义了.
Com*_*are 13
我的意图过滤器设置为android:priority ="0".
这是可能的最低优先级.所有其他应用程序将首先获得他们的机会.引用文档:
它控制执行广播接收器以接收广播消息的顺序.具有较高优先级值的那些在具有较低值的那些之前被调用.(该命令仅适用于同步消息;异步消息会忽略它.)
所以,他们只是打电话abortBroadcast().他们可能优先考虑到屋顶.
| 归档时间: |
|
| 查看次数: |
12488 次 |
| 最近记录: |