Facebook的Messenger在其清单文件中声明了android.provider.Telephony.SMS_RECEIVED
广播接收器,其优先级为2147483647
。
(很遗憾,我们被迫不遵循文档规定的最大优先级为1000,因为其他应用程序制定了自己的规则)
如果我的优先级也设置为荒谬的高水平2147483647
,那么我必须首先安装我的应用程序才能优先于任何“平局”。 没问题,我做了一个屏幕来提醒用户,在我的应用程序之后可能需要卸载然后重新安装其他应用程序才能正常运行。
但是,这里出现了问题-一切正常工作,但是一旦手机重新启动,“Messenger”开始优先于我的应用程序。 我已经到处寻找他们如何进行此黑魔法的方法。他们是如何做到的?当我的应用程序首先安装时,我如何在重新启动后获得优先权?
到目前为止,唯一想到的事情是在注册广播接收器时按包名称字母顺序进行排序。
com. f acebook > com. s trikeforcezero
我打算尝试在android.intent.action.BOOT_COMPLETED
上注册我的广播接收器,但我有一种感觉这行不通。
Messenger还设置了另一个android.provider.Telephony.SMS_RECEIVED
的“低优先级广播接收器”,其值为-1