我正在开发一个短信网关应用程序,它从客户端应用程序接收短信,对其执行一些操作并将数据上传到服务器。
在客户端应用程序中,当消息长度超过 160 个字符时,我会在使用 divideMessage
方法拆分消息后执行 sendMultipartTextMessage
。但是,当在 SMS 网关设备中接收到消息时,BroadcastReceiver
的 onReceive
每次调用仅获得一个 PDU 并且消息的不同部分收到相同的短信作为不同的短信。
是否有一些设置可以接收多部分短信?我正在使用华为 u8150 Helios 设备作为网关。我已对设备进行 root 操作,如果需要,我可以更改系统设置。
提前致谢。
最佳答案
对于那些正在寻找我如何解决这个问题的人,这就是我所做的:
发件人:
- 而不是使用内置的
divideMessage
, 我创建了自己的divideMessage
返回ArrayList<String>
,其中每个元素都有一个前缀,其长度为 <= 150(根据经验找到的数字)。 - 发送以上获得的
ArrayList<String>
使用内置sendMultipartTextMessage
的消息.
接收方:
- 获取消息的前缀并将消息存储在本地数据库中。
- 从前缀看它的所有其他部分是否已经到达。如果是,合并所有部分并处理。
注意:前缀中包含的内容以及所有部分如何合并不在本次讨论的范围内。
关于Android 多部分短信 - 单独接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251859/