1

我正在使用适用于 android 的 SMS api 开发一个应用程序。接收端是一个嵌入式单元,仅支持 7 位编码的 SMS,而我发送的字符串仅包含此特定字母表中的符号,这使您认为 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;
}

我考虑了以下解决方案:

  • 使用某种内部方法,但我读过的那些似乎都不存在了。
  • 发送数据消息,但这需要接收端也不支持的附加用户数据头。

任何帮助表示赞赏:-)

4

2 回答 2

2

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

经验教训:始终对应该有效的事情进行双重和三重检查。

于 2010-08-25T07:27:38.803 回答
1

尝试使用SmsMessage类:

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

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

我没试过。祝你好运。

于 2010-08-24T10:40:02.567 回答