Android系统。错误。重启后弹出短信通知

时间:2014-01-16 11:30:48

标签: android broadcastreceiver

我有问题。安装我的应用程序后,成功拦截了SMS广播。但重启后,所有拦截的短信广播仍会在通知栏(来自标准短信应用程序)中弹出

广播接收器:

public class OwnSmsBroadcastextends BroadcastReceiver{
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent) {

        final Bundle bundle = intent.getExtras();
        if (intent.getAction().equals(SMS_RECEIVED)) {
            abortBroadcast();

        try {...

清单:

   <receiver android:name=".OwnSmsBroadcast"  android:permission="android.permission.BROADCAST_SMS">
            <intent-filter android:priority="10000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                <action android:name="android.provider.Telephony.SMS_DELIVERED" />
                <action android:name="android.intent.action.BOOT_COMPLETED" /> 
            </intent-filter>
   </receiver>

为什么重新启动所有截获的通知弹出窗口后?

1 个答案:

答案 0 :(得分:1)

Google Hangouts 2.0会导致SMS_RECEIVED意图出现问题。意图过滤器设置为MAX_INTEGER值2,147,483,647 - 超过10,000的值。文档说PRIORITY永远不应超过1,000(你应该设置的最高值是999)及以上将导致“不可预测的行为” - 尽管通常优先级越高,Android的使用顺序。

要解决此问题,请在环聊中停用短信或将其卸载。

仅供参考 - SMS_DELIVERED在KitKat(v4.4 +)之前无效,但只有默认的SMS应用程序才会收到它。因此,除非您还要实现其他几项功能才能成为默认的SMS应用程序,因此没有必要。在KitKat中,SMS_RECEIVED仍在广播,因此您将收到通知,但您无法中止。