Android smsManager для обработки персонажа с серьезным акцентом - PullRequest
1 голос
/ 23 июня 2019

Удивило какое-то странное поведение в моем приложении для смс на 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, кажется, в любом случае отлично передает сообщение (с акцентом Граве) в одной части, в то время как во всех остальных отношениях приложение работает отлично

Если я заменил Гравийный акцент на Апостроф, по размеру () сообщается только одно сообщение сегмента, а за один выстрел отправляется одна смс sendTextMessage

Если я добавлю несколько акцентов Grave в сообщении, по размеру () будет сообщено о 4 сегментах, хотя похоже, что sendMultipartTextMessage отправляет только одну смс

Вопрос: Есть что-то особенное в Grave accent в Android smsManager ..?

1 Ответ

3 голосов
/ 23 июня 2019

Могила не может быть представлена ​​7-битной ASCII (по умолчанию для SMS). Это требует, чтобы его отправляли как 16-битные символы, что уменьшает максимальное количество символов наполовину. Таким образом, даже короткое сообщение потребует 2 SMS. Вы увидите то же поведение с эмодзи и другими не-ASCII персонажами. Если вы посмотрите на отправку SMS-сообщения в приложении для обмена сообщениями, например сообщениях Android, где отображаются символы, оставшиеся в тексте, вы увидите, как только вы добавите не-ASCII-символ, он упадет пополам (или если вы поместите его в середине текст, вы увидите количество текстов подпрыгивают).

...