我有问题。安装我的应用程序后,成功拦截了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>
为什么重新启动所有截获的通知弹出窗口后?
答案 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仍在广播,因此您将收到通知,但您无法中止。