SMS广播接收器在GO SM安装时不会被呼叫

问题描述:

我已经实现了一个SMS接收器,它可以毫无问题地拦截接收到的SMS消息。但是,当我安装GO SMS Pro并设置“禁用其他消息通知”时,即使我已将意向筛选器的优先级设置得非常高,我的应用程序也不会收到任何广播消息。有没有一种方法可以解决这个问题,以至于我的应用程序总是收到短信广播,而不管用户在Go SMS Pro的应用程序上做什么,特别是因为我的应用程序没有显示任何UI弹出通知?只要我卸载GO短信临,我的应用程序开始收到短信广播,并正常工作。SMS广播接收器在GO SM安装时不会被呼叫

以下是收到传入短信并安装GO SMS Pro的日志。 GO SMS Pro有一些魔法,我不明白。有人可以解释在这里做了什么,我怎样才能确保我的应用程序每次都得到有序的广播通知。

+0

这是因为GO短信的优先级上都是Integer.MAX_VALUE。 (**非常**高) – njzk2

附加以下广播接收机申报您的清单代码

<receiver 
     android:name="com.application.reciever.SMSReceiver" 
     class="com.application.reciever.SMSReceiver" android:exported="true"> 
    <intent-filter android:priority="999" > 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
</receiver> 

“的值必须为整数,如‘100’,编号越大具有更高的优先级。”

希望它能帮助你。

+0

如果GO也将优先级设置为999,不确定这将有助于 – MikeIsrael

+2

如果两个应用具有相同的优先级,则操作系统会调用先安装的应用。 – Ayush

+0

你试过了吗? @MikeIsrael – Andrain

GO SMS已将它们的绝对最大值设置为2147483647 (2^31-1)。因此,如果您将相同优先级设置为相同优先级,则在此情况下,Android操作系统会将广播传递给较早的应用程序,即(首次安装的应用程序)将获得通知。如果Go SMS Pro在您的应用程序之前安装,则应警告用户有关情况。他们可以配置Go SMS Pro或将其卸载,然后重新安装,以便您的应用也可以工作。

<receiver android:name=".SMSReceiver" > 
    <intent-filter android:priority="2147483647"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

然后在SMSReceiver 的onReceive()你需要添加abortBroadcast()中止任何进一步的广播

public void onReceive(Context context, Intent intent) { 
    abortBroadcast(); 
} 
+0

这是一个有趣的理论,但我的应用程序安装在GoSMS之前,我拥有最高优先级2147483647(2^31-1),GoSMS在我的应用程序之前接收广播接收器并中止它。 – evermeire