收到短信后,我需要将短信存储到sqlite数据库。目前,它可以与短信(160个字符)一起正常工作,但如果我收到多部分短信,则将短信截短为大约155个字符。

这是我的代码:

SmsBR.java

public class SmsBR extends BroadcastReceiver {
    private DBManager dbm;
        @Override
        public void onReceive(Context context, Intent intent) {
                    Bundle bundle = intent.getExtras();
                    if (bundle != null) {
                        Object[] pdus = (Object[])bundle.get("pdus");
                        final SmsMessage[] messages = new SmsMessage[pdus.length];
                        for (int i = 0; i < pdus.length; i++) {
                            messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                        }
                        if (messages.length > 0) {
                            dbm=DBManager.getDBM(null);
                            dbm.insertSMS(messages[0]);
                                                   }}}}

DBManager是我编写的用于简化读/写操作的单例类,并且我相信它对于长文本没有问题!

最佳答案

根据一些应用程序,似乎多部分SMS是以相同的 Intent 接收的,并且它们由message数组表示。

因此,基本上,您可以检索完整的消息:

StringBuffer content = new StringBuffer();
for (Message sms : messages) {
    content.append(sms.getDisplayMessageBody());
}
String mySmsText = content.toString();

据我所知,这些消息似乎是正确的顺序。无论如何,我不知道有什么方法可以检索消息头(除了自己解析pdu之外)。

关于android - 用于多部分SMS的BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7469881/

10-10 17:13