在收件人端收到的组合SMS不一样

时间:2011-03-31 11:25:05

标签: android sms

我撰写了如下长短信:

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

有160个$个标志构成我的第一个短信,146个#标志构成第二个短信& 153 *个符号构成第3条消息,完全按照我的撰写消息活动。

我通过网络发送这条长短信(由三条短信组成)。

我做了一些小改动 - 在使用SmsManager.divide()分割长短信后,我追加[1/3][2/3]& [3/3]在收件人结束时区分它们。

令我惊讶的是,第一条短信中的一些字符,即“$”,作为接收方端的第二条短信的一部分被接收。 我收到的是:

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

为什么7 $个符号从第一个短信转移到最后一个短信?

第二次和第三次短信的其余部分没问题。任何人都可以解释这个原因吗?

这与GSM有关。 CDMA手机的情况会有所不同吗?

2 个答案:

答案 0 :(得分:0)

我并不特别了解Android,但我发现这种行为并不令人惊讶:

SmsManager.divideMessage()将消息分成若干部分,以便可以发送每个部分(即除了最后一部分之外的每个部分都将是最大可能的大小,或者可能接近该部分)。

然后为每个部分添加一些文字,使其更长。因此,您指定的“部件”不再适合单个SMS,并且需要重做分离。

答案 1 :(得分:0)

我没有做任何Android开发,所以不能专门评论你正在使用的功能,但这看起来就像是将消息拆分成多个部分所致。

当发送长短信时,会向每个部分添加一些二进制标题,允许接收电话以正确的顺序将其重新组合在一起。

此用户数据头(UDH)通常为6个字节长(可以是7个),从您的消息中删除6个字节的空间。单个部分通常可以包含160个字符(每个字符7位,140个字节),删除这6个UDH字节,将其减少到153个字符。

在您的3部分消息中,7个字符(6个字节)不再适合您的第一部分,因此Android SMS功能将它们移动到第二部分。

如果您想更详细地了解联网消息的工作原理,请查看我的同事http://www.mediaburst.co.uk/blog/concatenated-sms/撰写的这篇博文。