Go SMS Pro覆盖android.provider.Telephony.SMS_RECEIVED

Axi*_*xus 5 sms android broadcastreceiver

我有一个应用程序,允许用户在收到短信时转发.早在一天,我有android:priorityintent-filterandroid.provider.Telephony.SMS_RECEIVED 上述Android的默认短信应用一套勉强.我这样做了,因此用户可以转发消息,而无需在消息传递应用程序中清除它们.然而,几个月后,Go SMS Pro发布了他们的应用程序更新,其android:priority价值极高,因此安装该应用程序的用户开始出现问题.我更新了我的应用程序,以便我的优先级略高于Go SMS Pro,一切都很顺利.现在Go SMS Pro再次执行此操作,它们android:priority已被占用到您可以分配的最大值.2147483647在他们的一个广播接收器上,2147483640在另一个上(是的,Go SMS Pro现在有两个广播接收器).

为了解决这个问题,我尝试将我的优先级改为max,就像他们一样,但不知何故,他们的应用程序仍在赢得短信战斗,即使我们的优先级相同.我在Android的某个地方读到必须在具有相同优先级的两个应用程序之间做出决定时,它会选择最早安装的应用程序.我尝试在我的应用程序之后安装Go SMS Pro,但仍然没有.

解决这个问题的正确方法是什么?他们在他们的应用程序中做了什么,使他们在其他人之前获得SMS广播,即使具有相同的android:priority值?

Com*_*are 3

解决这个问题的正确方法是什么?

修改您的应用程序以使其在 Go SMS Pro 或任何其他应用程序之后运行。如果您检测到应用程序以相同或更高的优先级监视同一广播(用于PackageManager此目的),您还可以建议用户,以便他们知道相应地配置这些应用程序。

试图比其他人拥有更高的优先级是一场军备竞赛,在这场军备竞赛中,你最终最多只能获得相同的优先级。具有绑定优先级的有序广播的行为没有记录,因此没有保证的行为。欢迎 Android(或 Android 的定制版本)修改决胜局算法。该算法可以是以下任何内容:

  • 按包名称的字母顺序排列

  • 在散列集合中找到的顺序,其中散列键可以基于任何内容(例如,对象 ID)

  • 随机数发生器

由于您无法可靠地“获胜”,因此当您确实“失败”时,请修改您的应用程序以尽可能成功。