阻止短信,但它似乎在Android 4.4及更高版本上不起作用。这已经在Stackoverflow的其他地方讨论过了,但到目前为止还没有已知的解决方法。有什么可以做的吗,使优先级高于默认的短信应用程序?这里是我使用的代码:
if (MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) {
// Toast toast = Toast.makeText(context,"SMS Received: "+MSG_TYPE , Toast.LENGTH_LONG);
// toast.show();
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
String body = smsMessage[0].getMessageBody().toString();
String num = smsMessage[0].getOriginatingAddress().toString();
try {
for (String a : mBlackList) {
if (PhoneNumberUtils.compare(a, num)) {
abortBroadcast();
if (preferences.getBoolean("show_notif", true)) {
showNotification(num, body);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
这是由于4.4中对SMSProvider的更改。要中止广播,您的应用程序必须注册为"默认短信应用程序"
未被选为默认SMS应用程序的其他应用程序只能读取SMS提供程序,但也可能在新SMS到达时通过收听SMS_RECEIVED_ACTION广播得到通知,这是一种可以传递到多个应用程序的不可中止广播。此广播适用于那些虽然未被选为默认短信应用程序但需要读取特殊传入消息(如执行电话号码验证)的应用程序。
https://developer.android.com/about/versions/android-4.4.html#SMS
关于设置为默认短信应用程序的详细信息:
http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html