为什么SmsMessage只返回部分短信?

时间:2014-04-04 11:07:01

标签: android sms broadcastreceiver

这是我的代码


public class SmsReceiver extends BroadcastReceiver {

    private static final String PDUS = "pdus";

    @Override
    public void onReceive(Context context, Intent intent) {
        Object[] pdus = (Object[]) bundle.get(PDUS);
        return SmsMessage.createFromPdu((byte[]) pdus[0]);
    }

}

短信的原文:

  

更糟糕的是,mailparser似乎采用了一个非常简单的单部分测试电子邮件,但除了1.1,text / plain

通过调用方法message.getMessageBody()getDisplayMessageBody()获得的文字:

  更糟糕的是,mailparser似乎采取了一个非常简单的单部分测试

我做错了什么?

P.S。环聊会返回完整的消息

2 个答案:

答案 0 :(得分:1)

试试这个

public void onReceive(Context context, Intent intent) {
    Bundle extras = intent.getExtras();
    String sender = "", receivedMessage = "";
    String MSG_TYPE = intent.getAction();
    if (MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) {
        Object[] pdus = (Object[]) extras.get("pdus");

        for (int i = 0; i < pdus.length; i++) {
            SmsMessage SMessage = SmsMessage
                    .createFromPdu((byte[]) pdus[i]);
            sender = SMessage.getOriginatingAddress();

            receivedMessage += SMessage.getMessageBody().toString();

        }

    }
}

答案 1 :(得分:1)

SMS通常由许多pdus组成,因此您需要这样的代码:

retMsgs = new SmsMessage[pdus.length];
for(int n=0; n < pdus.length; n++) {
    byte[] byteData = (byte[])pdus[n];
    retMsgs[n] = SmsMessage.createFromPdu(byteData);
}   

然后返回数组。