我有一个应用程序,可以让用户发送短信。当消息< 160个字符。在那之后,事情变得不那么完美了。看起来这里有几个选项:
这是我的新手:
1) 最受运营商支持的。用户可能会因为只花费N个单独的消息而感到生气,而不是转换为MMS等等。
2) 不确定这是否得到不同运营商的支持,并且一旦消息长度超过3 * 160个字符,就会看到,无论如何都会被不同的短信应用转换为彩信 - 可能完全不同于此。
3) 不知道如何做到这一点,旧手机可能不支持彩信。要使用android SDK发送彩信,我们只使用SmsManager.sendDataMessage()方法吗?
谢谢
答案 0 :(得分:33)
这是一个相当古老的帖子,但在搜索Android多部分短信时谷歌很高,所以也许它可以帮到某人。
关于第1部分和第2部分,它几乎是一回事。要使用sendMultipartTextMessage,您需要将长消息分解为字符串的ArrayList。然后根据需要发送尽可能多的SMS。简而言之:
SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(longMessage);
sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);
第3部分:正如已经指出的那样,MMS不是一种选择。收费和所有。
答案 1 :(得分:1)
对于MMS和多部分,正如你所说并非每个运营商都支持它,所以它们似乎不是最好的选择。
编辑:至于MMS如何在android-sdk上工作检查这个帖子:Android SDK MMS
答案 2 :(得分:-1)
当您使用基于Androids GSM的手机时,我建议使用选项2。
基于GSM的移动设备负责分段,其中将消息分成多部分以便在执行时发送,并且还在接收时将多部分消息组合成一个消息。如果你有一个负责发送短信的方法,那么默认情况下使用manager.divideMessage的选项,因为即使所需的信息段只有1个,它也能正常工作。
我不认为使用选项2发送消息应该有任何问题,它还将确保接收方将消息作为单个消息接收。 另外,我们需要编写自己的协议栈,在其中编写参考号和消息数,以便接收者理解并重新创建完整的消息;这不是很难。我们可以使用带头的字节数组,消息可以作为base64编码发送。
另外,我不太了解运营商对多部分消息中段数的限制;根据我的测试,我能够正确发送和接收160 * 8段。根据GSM标准,这些段最多可达255个,但这个数量可能取决于服务提供商的实现。