如果超过140个字符,Android SMS不可读

时间:2014-08-05 23:27:17

标签: android sms smsmanager

我试图通过自定义广播接收器接收短信。只要消息短于140个字符,一切都很好。超过140的任何内容都会导致消息在屏幕上显示为垃圾。

我已经查看了下面列出的三种方法(请注意,这不是我的确切代码)

        msgs = new SmsMessage[pdus.length];
        for (int i = 0; i < msgs.length; i++) { // for each message
            msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            //here are three things I've tried so far:

            String msg = msgs[i].getMessageBody(); //nope, msg contains garbage
                   msg = msgs[i].getDisplayMessageBody(); //nope, msg contains garbage
                   byte[] bdata = msgs[i].getUserData();    
                   for(int j=0; j < bdata.length; j++) {
                       str += Character.toString((char)bdata[j]);
                   }
                   //str contains garbage

这是一个截图: http://screencast.com/t/m1qjPWvxx

以前有人遇到过这个吗?

谢谢你, 亚历

1 个答案:

答案 0 :(得分:1)

单条消息的上限为140个字符。如果每个字符使用7位ascii而不是8位,它们最多可以达到160个字符。他们这样做你不能像这样逐字节地去 - 你实际上必须使用位掩码并移位以获得每个字符的正确值 - 他们将7位数据填充为8位字节,这意味着每7个字节将实际上是8个字符而不是7个。你会看到线条噪音类似于你在那种情况下得到的。