Android 在接收端接收到的合成短信不相同

Android 在接收端接收到的合成短信不相同,android,sms,Android,Sms,我写了一条长短信如下: $$$$$...$$$$$#####...#####*****...***** 有160个$符号组成了我的第一条短信,146个#符号组成了第二条短信,153个*符号组成了第三条短信,所有这些都与我的撰写短信活动完全一致 我通过网络发送这条长短信(由3条短信组成) 我做了一个小小的改变-在使用smsmsmanager.divide()分割长短信之后,我附加[1/3],[2/3]&[3/3]以在接收端区分它们 令我惊讶的是,第一条短信中的一些字符,即“$”在接收端作为第二条

我写了一条长短信如下:

$$$$$...$$$$$#####...#####*****...*****
有160个
$
符号组成了我的第一条短信,146个
#
符号组成了第二条短信,153个
*
符号组成了第三条短信,所有这些都与我的撰写短信活动完全一致

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

我做了一个小小的改变-在使用
smsmsmanager.divide()
分割长短信之后,我附加
[1/3]
[2/3]
&
[3/3]
以在接收端区分它们

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

[1/3]$$$...$$$ [2/3]$$$$$$$####..###### [3/3]****..***** [1/3]$$$...$$$ [2/3]$$$$$$$####..###### [3/3]****..***** 为什么7个
$
符号从第一条短信移动到最后一条短信

第二条和第三条短信的其余部分可以。有人能解释一下原因吗


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

我不知道Android的具体情况,但我不觉得这种行为令人惊讶:

将消息拆分为多个部分,以便每个部分都可以单独发送(即,除最后一部分外的每个部分都将具有最大的可能大小,或者可能接近该大小)


然后向每个部分添加一些文本,使其更长。因此,您指定的“部分”不再适用于单个短信,需要重新进行分离。

我没有进行任何Android开发,因此无法具体评论您正在使用的功能,但这似乎是由于将短信拆分为多个部分造成的

发送长短信时,每个部分都会添加一些二进制头,以便接收手机按正确的顺序将其重新组合在一起

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

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

如果你想更详细地解释串联消息是如何工作的,请看我的一位同事写的这篇博客文章