Определение кодировки данных SMS-сообщений в Android

1

Я работаю над приложением, использующим SMS apis для Android. Принимающая сторона представляет собой встроенный модуль, который поддерживает только 7-битное кодированное SMS, а отправляемая строка состоит только из символов этого алфавита, что заставляет вас думать, что Android отправит его в виде 7 бит. Но это не так.

Поэтому я ищу способ указать, какую кодировку использовать. См. Ниже, как выглядит мой код сегодня. Метод gsm7BitPackedToString превращает байтовый массив в 7-битную строку, т.е. Строка состоит только из 7-разрядных совместимых символов и копируется из внутреннего андроида api.

private static boolean sendMessage(String tel,byte[] message,int septets) {
    SmsManager sms = SmsManager.getDefault();
    if (septets != -1) {
        String a = GsmAlphabet.gsm7BitPackedToString(message,0,septets);
        sms.sendTextMessage(tel, null, a, null, null);
        return true;
    }
    return false;
}

Я рассмотрел следующие решения:

  • Использование какого-то внутреннего метода, но ни один из них Я читал о похоже, уже существует.
  • Отправка сообщения данных, но для этого требуется дополнительный заголовок User-Data, который также не поддерживает получающий.

Любая помощь приветствуется: -)

  • 0
    Привет, не могли бы вы добавить классы или ссылку, где вы нашли GsmAlphabet? Я хочу отправить SMS через USSD, и у меня возникла проблема с кодировкой строки, которую я отправляю в коде ussd. Я могу поделиться своим кодом для отправки ussd сообщения, если хотите. Спасибо.
  • 0
    GsmAlphabet взят из Android с открытым исходным кодом проекта
Теги:
encoding
sms
pdu
7bit

2 ответа

2
Лучший ответ

Ну, решение было не так сложно, как может показаться. Класс GsmAlphabet, который я заимствовал из проекта Android, имел некоторые ошибки в кодировке. Я заменил его последним из репозитория git, и теперь все кажется, что он работает так, как предполагается.

Извлеченный урок: всегда двойные и тройные проверки вещей, которые должны работать.

1

Попробуйте использовать класс SmsMessage:

http://developer.android.com/reference/android/telephony/SmsMessage.html

Создайте объект SmsMessage с помощью метода createFromPdu() и используйте его для отправки в SmsManager.

Я не пробовал. Удачи.

  • 1
    Я тоже посмотрел на это решение. Проблема, которую я нахожу, заключается в том, что, похоже, нет способа фактически отправить экземпляр класса SmsMessage в виде SMS. Может я просто что-то пропускаю ...?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню