例如,当消息中出现Grave口音时,我的Android短信应用中出现了一些奇怪的行为; smsTEXT = “如果您愿意,请尽快给办公室打电话。”
消息在160个字符的短信长度以内,但是当我打电话给它时;
ArrayList<String> segments = smsManager.divideMessage(smsTEXT);
报告的邮件部分数量大于1,实际上是2
if (segments.size() > 1 ){
smsManager.sendMultipartTextMessage(etc...)
nSegments = segments.size();
} else {
smsManager.sendTextMessage(etc...)
nSegments = 1;
}
sendMultipartTextMessage
似乎可以在一个部分中完美地(带有Grave口音)发送消息,而在所有其他方面,该应用程序都可以正常工作
如果我将Grave口音替换为Apostrophe,则size()仅报告单个分段消息,而sendTextMessage
则单发一次发送短信。
如果我在邮件中添加了几个Grave口音,尽管sendMultipartTextMessage
似乎只发送一个短信,但size()最多报告了4个分段
问题:Android smsManager
中的Grave口音有什么特别之处吗??
答案 0 :(得分:3)
Grave不能用7位ascii(SMS的默认值)表示。然后,这要求将其作为16位字符发送,这将最大字符数减少了一半。因此,即使是一条短消息也将需要2条SMS。您将看到表情符号和其他非ASCII字符的相同行为。如果您想在像Android消息之类的消息传递应用程序中发送SMS来显示文本中剩余的字符,则添加非ASCII字符后,它将立即减半(或者将其放置在中间的文本,您会看到文本数量猛增)。