使用新功能“禁用其他消息通知”最近更新了SMS。该功能使得收听传入SMS广播的其他应用程序不会触发。例如,我的应用程序Shady SMS监听传入的SMS广播以发送通知并实际提取和保存SMS消息。
当启用Go SMS中的这项新功能时,Shady不会发送通知或保存最终根本没有响应来电短信广播的消息。
Go SMS必须以某种方式取消注册我的应用程序的广播接收器,因为传入的SMS广播不能被中止。我的意图过滤器设置为android:priority =“0”。
有什么想法吗?
答案 0 :(得分:20)
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消息。如果他们捕获它并将其显示给用户,那就毫无意义。
答案 1 :(得分:12)
我的意图过滤器设置为android:priority =“0”。
这是可能的最低优先级。所有其他应用程序将首先获得他们的机会。引用documentation:
它控制广播接收器执行接收广播消息的顺序。具有较高优先级值的那些在具有较低值的那些之前被调用。 (该命令仅适用于同步消息;异步消息会忽略它。)
所以,他们只是打电话给abortBroadcast()
。他们可能优先考虑到屋顶。
答案 2 :(得分:3)
我认为我们做了一个修复,它工作:) 我们通过代码
启动广播接收器IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
filter.setPriority(2147483647);
receiver = new SmsAnalizer();
ac.registerReceiver(receiver, filter);
这很有效,我们完成了工作。
答案 3 :(得分:2)
下载apktool http://code.google.com/p/android-apktool/
下载由Dave Da创建的自动签名1 http://www.mediafire.com/?j9n7o6ub9urkfwy
在文件夹中提取了apktool和NICEBUTWRONGLYWRITTEN.APK 运行cmd 在cmd apktool d -d NICEBUTWRONGLYWRITTEN.APK modif1 等待 进入dir modif1 找到第一个可见的XML文件,找到这个值V = 2147483647 (搜索号码2147483647) 用1替换它 关闭文件保存。 跑 在cmd窗口中 apktool b -d modif1 / newsmsapp.apk 等到构建完成
使用signapk将builms newsmsapp.apk带到目录中,将其粘贴到那里 运行cmd 使用signapk cd到目录 类型: 签署newsmsapp.apk
在手机上安装newsmsapp.apk
进行。
答案 4 :(得分:0)
Go SMS Pro的优先级是最大值2147483647(2 ^ 31-1)。您也可以设置此值。如果优先级相同,Android操作系统将提供“旧”应用程序,即您首先安装的应用程序。我根据自己的经验说这个,我没有google对此事的说法。