我正在使用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;
}
我考虑过以下解决方案:
感谢任何帮助: - )
答案 0 :(得分:2)
嗯,解决方案并不像看起来那么难。我从android项目借来的GsmAlphabet类有一些编码错误。我用git存储库中的最新版本替换它,现在它似乎都像它应该的那样工作。
获得的经验教训:始终对可以发挥作用的事情进行双重和三重检查。
答案 1 :(得分:1)
尝试使用SmsMessage
类:
http://developer.android.com/reference/android/telephony/SmsMessage.html
使用SmsMessage
方法创建createFromPdu()
对象,并将其用于SmsManager
发送。
我没试过。祝你好运。