发送长短信息

时间:2009-12-30 17:45:23

标签: android

我有一个应用程序,可以让用户发送短信。当消息< 160个字符。在那之后,事情变得不那么完美了。看起来这里有几个选项:

  1. 手动将邮件分成多个短信,将每个部分作为单独的短信发送。
  2. 使用多部分发送短信功能(sendMultipartTextMessage())。
  3. 将邮件作为彩信发送(sendDataMessage()?)。
  4. 这是我的新手:

    1) 最受运营商支持的。用户可能会因为只花费N个单独的消息而感到生气,而不是转换为MMS等等。

    2) 不确定这是否得到不同运营商的支持,并且一旦消息长度超过3 * 160个字符,就会看到,无论如何都会被不同的短信应用转换为彩信 - 可能完全不同于此。

    3) 不知道如何做到这一点,旧手机可能不支持彩信。要使用android SDK发送彩信,我们只使用SmsManager.sendDataMessage()方法吗?

    谢谢

3 个答案:

答案 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)

在我看来,第一个选项是大多数手机默认执行的操作。短信按设计发送只能发送一定数量的字符(160个probbaly),只是告知用户该消息太大,无论如何他仍然想要发送它(通知总数将是多少短信)。

对于MMS和多部分,正如你所说并非每个运营商都支持它,所以它们似乎不是最好的选择。

编辑:至于MMS如何在android-sdk上工作检查这个帖子:Android SDK MMS

答案 2 :(得分:-1)

当您使用基于Androids GSM的手机时,我建议使用选项2。

基于GSM的移动设备负责分段,其中将消息分成多部分以便在执行时发送,并且还在接收时将多部分消息组合成一个消息。

如果你有一个负责发送短信的方法,那么默认情况下使用manager.divideMessage的选项,因为即使所需的信息段只有1个,它也能正常工作。

我不认为使用选项2发送消息应该有任何问题,它还将确保接收方将消息作为单个消息接收。 另外,我们需要编写自己的协议栈,在其中编写参考号和消息数,以便接收者理解并重新创建完整的消息;这不是很难。我们可以使用带头的字节数组,消息可以作为base64编码发送。

另外,我不太了解运营商对多部分消息中段数的限制;根据我的测试,我能够正确发送和接收160 * 8段。根据GSM标准,这些段最多可达255个,但这个数量可能取决于服务提供商的实现。