Формат SMS PDU - как извлечь часть сообщения

Как я могу извлечь сообщение из SMS PDU?

Мне нужно принять сообщение от SMS PDU. Когда я использую некоторые онлайн-сервисы, они работают нормально. Например, здесь - http://www.diafaan.com/sms-tutorials/gsm-modem-tutorial/online-sms-pdu-decoder/ — сообщение от PDU 0791448720003023240DD0E474D81C0EBB010000111011315214000BE474D81C0EBB5DE3771B равно diafaan.com.

Я нашел некоторые Java-реализации SMS PDU для преобразования PDU->Text, но, похоже, они не работали так, как я ожидал, потому что я не извлекаю часть сообщения из всего PDU (другими словами, я не вырезаю служебную информацию — From, SMSC ...) - так как я могу сделать это на Java? Или просто алгоритм тоже будет большим подспорьем. Спасибо!


person another-programmer    schedule 24.08.2015    source источник


Ответы (1)


Наконец, я использовал библиотеку SMSLib:

            //String resultMessage = ...
            Pdu pdu = new PduParser().parsePdu(resultMessage);
            byte[] bytes = pdu.getUserDataAsBytes();
            String decodedMessage;
            int dataCodingScheme = pdu.getDataCodingScheme();
            if (dataCodingScheme == PduUtils.DCS_ENCODING_7BIT) {
                decodedMessage = PduUtils.decode7bitEncoding(null, bytes);
            } else if (dataCodingScheme == PduUtils.DCS_ENCODING_8BIT) {
                decodedMessage = PduUtils.decode8bitEncoding(null, bytes);
            } else if (dataCodingScheme == PduUtils.DCS_ENCODING_UCS2) {
                decodedMessage = PduUtils.decodeUcs2Encoding(null, bytes);
            } else {
                log.error("Unknown DataCodingScheme!");
                ...
            }
person another-programmer    schedule 26.08.2015
comment
Можно было бы сделать еще лучше - в PduUtils есть метод getDecodedText - person another-programmer; 26.08.2015