我正在编写处理短信的应用程序,按照我的计划,它应该取代股票/默认应用程序。
我正在拦截传入短信触发android.provider.Telephony.SMS_RECEIVED
广播并发布我自己的通知,然后调用abortBroadcast()
,所以最终没有传入新消息的通知,这会导致默认/股票应用程序。
但问题实际上是,当用户没有阅读足够长的时间(比如几分钟)时,传入的短信股票/默认应用程序会出现另一个广播 - 我怀疑只是检查是否有未读短信。因此,用户会看到 2 个通知:一个来自默认/股票消息传递应用程序,另一个来自矿山,这很混乱。
我找不到在有未读短信时触发的广播?
有什么想法,提示吗?
您可以通过这种方式设置接收器的优先级,这样您就知道它具有最高优先级并将执行 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>