正如我从多个来源读到的,Android4.4中的API有一些变化,等等。没错,我的代码现在不起作用了:(
基本上,我想通过删除垃圾邮件SMSes来读取收到的短信并过滤可能的垃圾邮件。由于删除现在无法完成,我只是试图提示,新收到的短信是潜在的垃圾邮件。
下面是非Android4.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>要让它在Android4.4中运行,我必须改变什么?我只想阅读传入的SMSes而不执行abortBroadcast。
发布于 2014-11-11 11:09:50
因为只有默认的短信应用程序才能接收SMS_DELIVER_ACTION广播。其他应用程序现在必须使用SMS_RECEIVED_ACTION广播,这是在API 19中引入的,不能中止。
发布于 2014-11-12 02:02:51
终于找到了。您可以参考本教程:
http://code.tutsplus.com/tutorials/use-text-to-speech-on-android-to-read-out-incoming-messages--cms-22524
解释如何读取传入的SMSes。请注意,某些功能,如中止广播,删除短信将无法运行从Android4.4开始,除非用户选择您的应用程序作为默认的消息应用程序。
https://stackoverflow.com/questions/26863128
复制相似问题