android abortBroadcast不会阻止短信被广播

时间:2011-10-11 18:44:12

标签: android broadcastreceiver

在我的onReceive方法中我有这段代码:

if (from.equals(number)) {
    abortBroadcast();
    in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(in);
    Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
} else {
    Toast.makeText(context, "Not from needed number", Toast.LENGTH_SHORT).show();
}   

其中number =“29853” - 我希望捕获的数字消息,而不是保存在收件箱中。

此代码正常工作 - 如果sms来自第一个Toast的编号,并且它打印消息的内容,如果sms不是来自编号“Not from needed number”打印。问题是abortBroadcast没有提供它的业务 - 尽管接收者的优先级是1000,但来自号码的消息仍然在手机的收件箱中:

<receiver android:name=".service_classes.MyReceiver">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED"
                android:priority="1000" />
    </intent-filter>
</receiver>

问题是什么 - 为什么不abortBroadcast工作?

4 个答案:

答案 0 :(得分:8)

android:priority移动到它所属的intent-filter。

 <intent-filter android:priority="9999999"> 

那么你将更有可能拥有优先权,你的取消将起作用。 我测试过它确实有用。

答案 1 :(得分:4)

答案 2 :(得分:3)

来自收件箱的abortBroadcast()没有删除消息,只是取消状态栏通知。要从收件箱中删除短信,请参阅this link

答案 3 :(得分:1)

我前段时间使用过它并且它正在工作,我可以拒绝显示一些消息,但现在这不起作用。我认为android不再允许用户对SMS_RECEIVED事件进行全部控制。