java - sendMultipartTextMessage 作为多条 SMS 消息发送?

标签 java android sms android-5.0-lollipop android-4.4-kitkat

我在 Android 中使用以下代码发送长短信:

SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(message);
sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);

问题在于,在 Lollipop 5.0 之前的手机上(主要在 Kitkat 4.4 上注意到),SMS 是作为两个单独的 SMS 而不是合并的(多部分)消息发送的。

在运行 Lollipop 5.0+ 的手机上,消息是否作为长短信正确发送?

我已经在两部完全相同型号的手机上对此进行了测试,一部运行 4.4 Kitkat,另一部更新为 5.0 Lollipop,是否出现上述相同行为?有没有其他人注意到这一点或找到了解决方案?

最佳答案

当消息足够长时,通常超过 160 个字符,它会作为单独的 SMS 消息发送,并且在 GSM 网络上会添加一些额外的元数据,称为用户数据 header (UDH),告诉接收者单独的消息应该合并。

您希望接收方将它们组合回一条消息中。请注意,它是组合它们的接收器,所以这就是您需要查看的地方。据我所知,Lollipop 中 sendMultipartTextMessage 的行为与 KitKat 中的行为相同。

关于java - sendMultipartTextMessage 作为多条 SMS 消息发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31178859/

相关文章:

android - list 与 Activity 中的广播接收器注册

javascript - Firefox for Android 输入文件 onchange 在使用相机时不会触发

android - Galaxy S2/S3/S4 上的库存短信应用程序包名称?

arduino - 如何删除SIM800l中的所有短信?

iphone - UIPasteBoard 不粘贴音频文件?

java - 从死信队列恢复

java - 执行java类时无法在linux服务器中添加jar

android - RoboSpice-改造POJO

java - 无法更改 JOptionPane 的背景颜色

java - 空白 ("") 作为常数 v/s 直接使用空白 ("")