Составленное SMS не получено то же самое в конце получателей - PullRequest
0 голосов
/ 31 марта 2011

Я составляю длинное SMS, как показано ниже:

$$$$$...$$$$$#####...#####*****...*****

Имеются 160 $ знаков, из которых состоит мое первое SMS, 146 # знаков для составления второго SMS и 153 * знаков длясоставьте 3-е сообщение, все точно в соответствии с моей операцией создания сообщения.

Я отправляю это длинное SMS (состоящее из 3 SMS) по сети.

Я делаю небольшое изменение - после разделенияк длинным смсам, используя SmsManager.divide(), я добавляю [1/3], [2/3] & [3/3], чтобы различать их в конце получателей.

К моему удивлению, некоторые из символов первого SMS, то есть '$',получен как часть 2-го СМС на конце получателя.Вот что я получаю:

[1/3]$$$...$$$
[2/3]$$$$$$$####..######
[3/3]****..*****

Почему знаки 7 $ сместились с первого на последнее СМС?

Остальные вторые и третьи СМС в порядке.Кто-нибудь может объяснить причину этого?

Это было связано с GSM.Будет ли он другим в случае телефона с CDMA?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Я не занимался разработкой для Android, поэтому не могу специально комментировать функции, которые вы используете, но похоже, что это вызвано разделением сообщения на несколько частей.

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

Этот заголовок пользовательских данных (UDH) обычно имеет длину 6 байтов (это может быть 7), удаляя пространство из 6 байтов из вашего сообщения. Одна часть обычно может содержать 160 символов (140 байт при 7 битах на символ), при удалении этих 6 байт UDH это уменьшается до 153 символов.

В вашем сообщении, состоящем из 3 частей, 7 символов (6 байт) больше не помещаются в первой части, поэтому функции Android SMS перемещают их во вторую.

Если вы хотите более подробное объяснение того, как работают составные сообщения, взгляните на это сообщение в блоге, написанное одним из моих коллег http://www.mediaburst.co.uk/blog/concatenated-sms/.

0 голосов
/ 31 марта 2011

Я не знаю конкретно об Android, но я не нахожу такое поведение удивительным:

SmsManager.divideMessage() разбивает сообщение на части, так что каждая отдельная часть может быть отправлена ​​(т. Е. Каждая часть, кроме последней, будет иметь максимально возможный размер или, возможно, около этого).

Затем вы добавляете текст к каждой части, делая его длиннее. Следовательно, указанные вами «части» больше не вписываются в одно SMS, и разделение необходимо повторить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...