阅读Android 4.4中的传入短信

时间:2014-11-11 10:51:38

标签: android

正如我从多个来源读到的那样,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的情况下阅读传入的短信。

2 个答案:

答案 0 :(得分:1)

自4.4以来,只有默认短信应用才会收到SMS_DELIVER_ACTION广播。其他应用现在必须使用SMS_RECEIVED_ACTION广播,这是在API级别19中引入的,不能中止。

Official page here...

答案 1 :(得分:0)

管理找到它。您可以参考本教程:

http://code.tutsplus.com/tutorials/use-text-to-speech-on-android-to-read-out-incoming-messages--cms-22524

说明如何阅读传入的短信。请注意,除非用户选择您的应用作为默认消息传递应用,否则某些功能(如中止广播,删除短信)将无法从Android 4.4开始工作。