如何处理广播接收器中超过160个字符(如250个字符)的短信

时间:2016-11-21 14:02:38

标签: android android-broadcastreceiver smsmanager

如何在广播接收器中处理多部分短信并在开始操作之前将其存储在一个字符串中,就像我想将多部分短信存储在一个字符串中然后用不同的分隔符拆分然后从中获取状态代码我有1个短信有250个字符。我尝试使用下面的代码,但没有工作,我在模拟器上测试它,请帮助我,我也把代码接收。

String mySmsText ;
        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]);
              }
                 StringBuffer content = new StringBuffer();
                  if (messages.length > 0) {
                  for (int i = 0; i < messages.length; i++) {
                      content.append(messages[i].getMessageBody());
                        }
                    }
                   mySmsText = content.toString();
                  }    
            instance.t1.setText(mySmsText);
        }
   } 

我试图打印msg,但显示不良字符也会覆盖旧字符。

我很抱歉,首先我的代码没有问题,问题只出在我测试过的模拟器上。当我在真实设备上测试时,它很好用,我很抱歉...

1 个答案:

答案 0 :(得分:0)

最后我完成了先生AxelH 的答案

DataBaseHandler db;
        String mySmsText;
        public void onReceive(Context context, Intent intent) {
            db = new DataBaseHandler(context);
            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) {
                    StringBuffer content = new StringBuffer();
                    for (SmsMessage sms : messages)
                        content.append(sms.getDisplayMessageBody());
                    mySmsText = content.toString();
                }
                db.update_sys_pwd(mySmsText);
                instance.t1.setText(mySmsText);
            }
        }