正如我从多个来源读到的那样,Android 4.4以后的API有一些变化等等。真的,我的代码现在不能正常工作:(
基本上,我想通过删除垃圾短信来阅读传入的短信并过滤可能的垃圾邮件。由于现在无法删除,我试图提示新收到的短信是潜在的垃圾邮件。
以下是非Android 4.4版本的源代码段:
public class Sms extends BroadcastReceiver{
private static final String ACTION = "android.provider.Telephony.SMS_DELIVER";
public void onReceive(Context context, Intent intent) {
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]);
// Log.i(TAG, messages.getMessageBody());
if(messages.getMessageBody().contains("Adv")) {
abortBroadcast();
}
}
}
我的清单文件:
<receiver android:name=".Sms" android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_DELIVER" />
</intent-filter>
</receiver>
我必须更改什么才能使其适用于Android 4.4?我只是想在不进行abortBroadcast的情况下阅读传入的短信。
答案 0 :(得分:1)
自4.4以来,只有默认短信应用才会收到SMS_DELIVER_ACTION广播。其他应用现在必须使用SMS_RECEIVED_ACTION广播,这是在API级别19中引入的,不能中止。
答案 1 :(得分:0)
管理找到它。您可以参考本教程:
说明如何阅读传入的短信。请注意,除非用户选择您的应用作为默认消息传递应用,否则某些功能(如中止广播,删除短信)将无法从Android 4.4开始工作。