第三方SMS消息传递应用程序阻止BroadcastReceiver接收SMS消息

时间:2013-08-15 19:48:34

标签: android sms broadcastreceiver

我正在制作一款自动响应传入短信的Android应用。它会在BroadcastReceiver

中按照以下AndroidManifest.xml检测传入的短信
<receiver android:name=".receiver.SMSBroadcastReceiver" >
    <intent-filter android:priority="1000" >
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

其中SMSBroadcastReceiver如下

public class SMSBroadcastReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        // code here to deal with message etc.
    }
}

这一切都正常。当我安装Facebook Messenger并同时检查“打开短信”和“用作主要短信应用”时出现问题:

facebook screencapture

使用这些设置onReceive(Context context, Intent intent)现在永远不会被调用,因此对于使用此应用程序或其他第三方SMS应用程序的用户,我的应用程序无效!

到目前为止的进展

我已经意识到fbook可能会在它到达我的应用程序之前调用abortBroadcast();,如果它有更高的优先级,但我已经优先考虑maximum of 1000

1 个答案:

答案 0 :(得分:1)

  

我意识到abortBroadcast()可能就是这种情况; fbook在进入我的应用程序之前被调用,如果它具有更高的优先级,但我已经将优先级设置为最大值1000。

这不是最大值。这就是文档所说的最大值。最大值为2,147,483,647左右(最大正整数)。

您拥有比其他所有SMS客户端更高的优先级是不切实际的,因为任何人都可以声明他们的最大值。只需告知您的用户其他短信应用可能会干扰您的用户。