1

我正在编写处理 SMS 的应用程序,并且按照我的计划,它应该替换库存/默认应用程序。

我正在拦截android.provider.Telephony.SMS_RECEIVED传入短信触发的广播并发布我自己的通知然后调用abortBroadcast(),所以最后没有通知传入的新消息,这会导致默认/库存应用程序。

但问题实际上是当用户没有阅读足够长的时间(比如几分钟)传入的短信库存/默认应用程序会出现另一个广播 - 我怀疑只是检查有未读的短信。因此,用户会看到 2 条通知:一条来自默认/库存消息应用程序,另一条来自地雷,这很混乱。

当有未读短信时,我找不到哪个广播被触发?

任何想法,提示?

4

1 回答 1

-1

您可以通过这种方式设置接收器的优先级,这样您就知道它具有最高优先级并将执行该onReceive()方法:

<receiver android:name=".SmsReceiver" android:enabled="true"
    android:exported="true" android:priority="999">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>
于 2012-09-19T14:33:35.737 回答