Я работаю над приложением, использующим 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;
}
Я рассмотрел следующие решения:
Любая помощь приветствуется: -)
Ну, решение было не так сложно, как может показаться. Класс GsmAlphabet, который я заимствовал из проекта Android, имел некоторые ошибки в кодировке. Я заменил его последним из репозитория git, и теперь все кажется, что он работает так, как предполагается.
Извлеченный урок: всегда двойные и тройные проверки вещей, которые должны работать.
Попробуйте использовать класс SmsMessage
:
http://developer.android.com/reference/android/telephony/SmsMessage.html
Создайте объект SmsMessage
с помощью метода createFromPdu()
и используйте его для отправки в SmsManager
.
Я не пробовал. Удачи.