【问题标题】:Defining data encoding of SMS messages in Android在 Android 中定义 SMS 消息的数据编码
【发布时间】:2011-05-15 02:31:01
【问题描述】:

我正在使用适用于 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;
}

我考虑过以下解决方案:

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

任何帮助表示赞赏:-)

【问题讨论】:

  • 您好,请问您可以添加您在哪里找到 GsmAlphabet 的课程或链接吗?我想通过 USSD 发送 SMS,但我在 ussd 代码中发送的字符串的编码有问题。如果你愿意,我可以分享我发送 ussd 消息的代码。谢谢。
  • GsmAlphabet 取自android open source project

标签: android encoding sms pdu 7-bit


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    尝试使用SmsMessage类:

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

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

    我没试过。祝你好运。

    【讨论】:

    • 我也看过那个解决方案。我发现的问题是似乎没有办法将 SmsMessage 类的实例作为 SMS 实际发送。也许我只是忽略了一些东西......?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多