Перейти к содержанию
Fire Monkey от А до Я
  • 0

Кол-во символов в SMS


masmat

Вопрос

Итак, 1 SMS на латинице вмещает до 160 символов, 1 SMS на кириллице — 70 символов.

Если Вы хотите отправить длинное сообщение в 2 части и более, то 1 часть SMS на латинице сможет содержать до 153 символов, а 1 SMS на кириллице — до 67 символов.

Исходный код, приведенный ниже работает хорошо, только если в сообщении до 67 символов Кириллицей, а если символов в сообщении 68 и более, то SMS не отправляется.

uses   Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,  Androidapi.Helpers;
...
procedure TFrmMain.BtnSendSmsClick(Sender: TObject);
var
  SmsTo: JString;
  SmsManager: JSmsManager;
begin
  SmsManager := TJSmsManager.JavaClass.getDefault;
  SmsTo := StringToJString('+79*********');
  SmsManager.sendTextMessage(smsTo, nil, StringToJString('Test SMS'), nil, nil);
end;

Я понимаю, что при превышении определенного кол-ва символов, SMS должна форматироваться в MMS, но отправка все равно не происходит.

Собственно вопрос, как решить эту проблему.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
Только что, Rusland сказал:

Может самому разбивать на несколько СМС в зависимости от текста (кол-во символов, лат/кир)?

Тогда получается, что отправляется два сообщения СМС, т.е. предложение разорвано. А нужно именно "склееное" сообщение, одним текстом

Ссылка на комментарий
  • 0

В конце какой-то код приписывать надо, как нумерация, тогда телефон при получении нескольких смс сам их склеит... лет 10 назад этим занимался, к сожалению, сейчас уже не вспомню 

Ссылка на комментарий
  • 0

поднимите документацию, она есть, и даже по-русски можно найти

общий смысл в том, что действительно отправляются они как несколько СМС, но в конце каждого текста проставляется номер куска

именно поэтому, если одна смс - то 70 символов, если две - 2*67

склейка происходит на принимающей стороне программно

Ссылка на комментарий
  • 1

Вообщем нужно для этого использовать как оказалось функцию SmsManager.sendMultipartTextMessage

uses   Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,  Androidapi.Helpers;
...
procedure TForm1.SendSms(Num, mess : string);
var
  SmsTo, Jmess: JString;
  SmsManager: JSmsManager;
  messageArray: JArrayList;
begin
  SmsManager := TJSmsManager.JavaClass.getDefault;
  SmsTo := StringToJString(Num);
  Jmess := StringToJString(mess);
  messageArray := smsManager.divideMessage(Jmess); //разбивам сообщение на части массива
  SmsManager.sendMultipartTextMessage(smsTo, nil, messageArray, nil, nil);
end;

 

Изменено пользователем masmat
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...