在Android中定义SMS消息的数据编码

时间:2010-08-24 10:06:20

标签: android encoding sms pdu 7-bit

我正在使用SMS apis for android开发应用程序。接收端是一个只支持7位编码短信的嵌入式单元,我发送的字符串只包含来自这个特定字母表的符号,这使你认为Android会将其编码为7位。但事实并非如此。

因此,我正在寻找一种方法来指定要使用的编码。请参阅下面的代码,了解我今天的代码。方法gsm7BitPackedToString将字节数组转换为7位字符串,即该字符串仅由7位兼容字符组成,并从内部android 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;
}

我考虑过以下解决方案:

  • 使用某种内部方法,但I've read about似乎不再存在。
  • 发送数据消息,但这需要一个接收端也不支持的额外用户数据标头。

感谢任何帮助: - )

2 个答案:

答案 0 :(得分:2)

嗯,解决方案并不像看起来那么难。我从android项目借来的GsmAlphabet类有一些编码错误。我用git存储库中的最新版本替换它,现在它似乎都像它应该的那样工作。

获得的经验教训:始终对可以发挥作用的事情进行双重和三重检查。

答案 1 :(得分:1)

尝试使用SmsMessage类:

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

使用SmsMessage方法创建createFromPdu()对象,并将其用于SmsManager发送。

我没试过。祝你好运。