如何以编程方式增加IntentFilter的优先级

时间:2012-12-18 07:06:50

标签: android sms broadcastreceiver intentfilter notificationmanager

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

<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();
             ....
 }

1 个答案:

答案 0 :(得分:0)

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

<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();
    }
}

希望它对你有所帮助。

感谢。