Facebook的"Messenger"有一个短信广播接收器,重启后具有最高优先级

Str*_*ero 64 java android facebook broadcastreceiver

Facebook的Messenger,2147483647对于他们的android.provider.Telephony.SMS_RECEIVED广播接收器,优先于他们的清单中声明.

(令人遗憾的是,我们不得不遵循文档的最高优先级标准为1000,因为其他应用程序制定了自己的规则)

据我所知,如果我的优先级也设置得非常高2147483647,我必须首先安装我的应用程序,以优先于任何"关系".没问题,我做了一个屏幕提醒用户可能需要卸载哪些应用程序,然后在我的应用程序正常运行后重新安装.

但是,这就是问题 - 一切正常,但一旦手机重新启动,"Messenger"开始优先于我的应用程序.我到处看看他们怎么能做这个黑魔法.他们如何做到这一点?如何在首次安装我的应用程序后重新启动后获得优先级?

到目前为止,唯一想到的是,在注册广播接收器时,包名称在引导时按字母顺序排序.

COM.f acebook> com.s trikeforcezero

我打算尝试注册我的广播接收器,android.intent.action.BOOT_COMPLETED但我觉得这不会起作用.

Messenger还有另一个"低级修道院广播接收器" android.provider.Telephony.SMS_RECEIVED设置为-1

Bus*_*ush 1

这揭示了 Android 机制中的一些错误,因为您认为他们放入清单中的数字并不是真正的数字。2147483647 实际上是 (-1),即 2^31。为什么您认为先安装哪个应用程序很重要?

  • 2147483647 是最大的有符号 4 字节整数 (0x7FFFFFFF)。加一就是 0x80000000,这是最小的 4 字节有符号整数 (-2147483648),也相当于 2^31。 (3认同)
  • 2147483647 不是 -1 也不是 2^31。2^31 是-2147483648。 (2认同)