0

首先,我很抱歉我的英语不够好!

我的问题是我正在编写一个阻止短信应用程序,我想用我的应用程序接收短信,然后我中止广播以使默认短信应用程序无法接收短信,所以我将我的应用程序设置为最高优先级(1000),但我的在安卓的默认短信应用程序后,应用程序仍然接收广播。

当我的手机收到短信时,我会按顺序打印所有 Android 手机短信的广播接收信号,并且我认识到系统短信应用程序总是首先接收短信广播,并且它也具有最高优先级。

那么我怎样才能让我的短信应用程序可以在系统默认短信之前接收短信广播呢?

我真的很需要你的帮助!

感谢您的阅读!

4

1 回答 1

6

正如谷歌所记录的那样,广播接收器的最大优先级小于 1000,即 999。但您可以将其设置为最高级别 2147483647。因为 Google Play 上的其他应用程序使用比广播接收器更高的优先级(超过 999) ,因此您的应用可能无法收到短信。通过这个最高级别,您的应用程序将始终首先收到短信。因此,通过这种方式,您可以在默认消息应用程序之前获得广播。

看到这个答案!


编辑

我在 StackOverflow 上重新审视我的旧答案,这个答案看起来很粗略。以下是IntentFilter priority 官方文档的节选。

在处理过滤器描述的类型的意图方面,应给予父组件的优先级。该属性对活动和广播接收器都有意义:

  1. 它提供了有关活动如何能够响应与过滤器匹配的意图的信息,相对于也可以响应该意图的其他活动。当一个意图可以由具有不同优先级的多个活动处理时,Android 将只考虑那些具有较高优先级值的活动作为该意图的潜在目标。

  2. 它控制执行广播接收器以接收广播消息的顺序。具有较高优先级值的那些在具有较低值的那些之前被调用。(该顺序仅适用于同步消息;对于异步消息,它会被忽略。)

官方的下限和上限仍然分别是-1000和1000。具有较高优先级的广播接收器可以中止有序广播,从而阻止具有较低优先级的其他接收器接收它们。

于 2013-09-22T04:32:29.707 回答