0

我正在制作一个自动响应传入 SMS 消息的 Android 应用程序。它检测传入的 SMS 消息,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并检查“打开短信”和“用作主要短信应用程序”时会出现问题,如下所示:

脸书截屏

现在永远不会调用这些设置onReceive(Context context, Intent intent),因此对于使用此或其他 3rd 方 SMS 应用程序的人,我的应用程序不起作用!

迄今为止的进展

我已经意识到,如果abortBroadcast();fbook 具有更高的优先级,它可能会在它到达我的应用程序之前被调用,但我已经将优先级设置为最大值 1000

4

1 回答 1

1

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

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

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

于 2013-08-15T19:54:19.313 回答