Кодирование SMS-сообщений в Android - PullRequest
3 голосов
/ 23 апреля 2010

Моя проблема в том, что я хочу отправить SMS-сообщение определенного класса и с определенной кодировкой. (Класс 0 и 7-битное кодирование).

При проверке Android.Telephony.SmsManager и SmsMessage не так много, что вы можете сделать. SmsManager предлагает две функции SendTextMessage и SendDataMessage. Первый работает нормально, если вы просто хотите отправить обычное SMS кому-нибудь. Поэтому я предполагаю, что SendDataMessage - это функция, которую мне как-то нужно использовать. Однако я не могу понять, как его использовать. И, кажется, нет в сети примеров (которые я могу найти) кого-либо, использующего эту функцию.

Кто-нибудь знает что-нибудь, что могло бы мне помочь? :-) Либо как отправлять 7-битные смс с кодированием Class0, либо как правильно использовать функцию SendDataMessage.

1 Ответ

6 голосов
/ 20 февраля 2011

Функция sendDataMessage добавляет собственный заголовок пользовательских данных, UDH, информацию, состоящую из номера порта приложения и схемы кодирования данных TP без класса, 8-битные данные 0x04 (находится в SmsMessage кодовая база)

функция SendTextMessage отправит сообщение с кодировкой GSM7 и схемой кодирования данных TP 0x00 - без сжатия, кодировка по умолчанию (7 бит), без класса. Согласно спецификации GSM 03.38

Для данных класса 0, 7 бит, вы должны искать значение 0x10 в расположении байта схемы TP-Data-Encoding-Scheme. Для этого нужно будет контролировать все отправляемые PDU. В настоящее время это не поддерживается общедоступным Android-API. Тем не менее, это может быть сделано (хотя и не рекомендуется) через отражение на внутренних API.

См. SMS raw pdu в Android

...