BroadcastReceiver для составных SMS - PullRequest
       10

BroadcastReceiver для составных SMS

5 голосов
/ 19 сентября 2011

Мне нужно хранить смс в базу данных 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 - это одноэлементный класс, который я написал для упрощения операций чтения / записи, и я уверен, что у него нет проблем с длинными текстами!

Ответы [ 2 ]

7 голосов
/ 19 сентября 2011

в соответствии с несколькими приложениями кажется, что составные SMS-сообщения принимаются с одинаковым намерением и что они представлены массивом сообщений.

так что в основном вы получаете полное сообщение:

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

Насколько я знаю, похоже, что сообщения в правильном порядке. Во всяком случае, я не знаю ни одного способа получить заголовок сообщения (кроме самого анализа pdu).

0 голосов
/ 19 сентября 2011

155 символов звучит как длина пользовательских данных, если учесть заголовок пользовательских данных для составного SMS.Другими словами, это не похоже на проблему здесь - PDU хранится правильно.Вам нужно будет собрать другие PDU для того, чтобы SMS отображал / сохранял всю информацию.

...