1

这就是我将我的应用程序意图过滤器的优先级设置为最高的方式。在接收到额外的意图后,我中止了广播,但本机应用程序仍在接收短信,并且通知栏仍然显示最烦人的消息内容,因为我没有希望它显示消息正文。有什么我想念的吗?

<receiver android:name=".MySmsReceiver" > 
<intent-filter> 
        <action android:name="android.provider.Telephony.SMS_RECEIVED"
            android:priority="999"
             /> 
</intent-filter> 
</receiver>

这是我的接收者的onReceive()方法

public void onReceive(final Context context, Intent intent) {

    Bundle extras = intent.getExtras();
    abortBroadcast();
             ....
 }
4

1 回答 1

2

尝试以这种方式声明您的接收者:

<receiver android:name=".MySmsReceiver">
    <intent-filter android:priority="999">
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

代替 :

<receiver android:name=".MySmsReceiver" > 
<intent-filter> 
        <action android:name="android.provider.Telephony.SMS_RECEIVED"
            android:priority="999"
             /> 
</intent-filter> 
</receiver>

在中止广播之前,请尝试检查以下情况:

编辑:

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(SMS_RECEIVED)) {
        Bundle extras = intent.getExtras();
        if(extras != null)
          // doBroadcast();
        else
           abortBroadcast();
    }
}

希望它可以帮助你。

谢谢。

于 2012-12-18T07:19:16.307 回答