【问题标题】:Sending SMS between emulators在模拟器之间发送短信
【发布时间】:2016-03-07 15:16:16
【问题描述】:

我正在尝试从模拟器发送短信到模拟器。它可以工作,但只能使用非常有限的字符集(ASCII 子集)。如果我在消息中包含以下任何字符,那么在这些字符第一次出现之后的任何内容都会变成乱码:

|, ^, {, }, €, [, ~, ] and \

(但我还需要非 ASCII 字符,如希伯来字母)

例如,如果我发送Hello ^ World,它将变为Hello ^。

或者[Hello:World] 变成[ e ] 之类的东西

这是我使用的代码:

void sendSms(final String toNumber, final String message) {
    final SmsManager sm = SmsManager.getDefault();
    if (message.getBytes().length <= 160) {
        sm.sendTextMessage(toNumber, null, message, null, null);
    } else {
        ArrayList<String> msgStringArray = sm.divideMessage(message);
        sm.sendMultipartTextMessage(toNumber, null, msgStringArray, null, null);
    }
    Log.v(TAG, "sendSms: " + toNumber + ", " + message + ", " + message.length() + " chars / " + message.getBytes().length + " bytes");
}

我用来接收消息的代码在这里:Receive an read SMS with correct encoding and convert to UTF8

【问题讨论】:

  • “接收具有正确编码的已读短信并转换为 UTF8”没有可接受的答案 - 您是否复制了“错误代码” - 它描述了编码问题......
  • 这也是我的问题。一开始还以为是接收的问题,现在看来竟然是发送了。或者介于两者之间......谁知道......我还向android提交了一个错误报告:code.google.com/p/android/issues/detail?id=202723
  • SMS 使用 7 位 ascii。这仅意味着非常基本的字符。您需要调用 sendMultipartTextMessage 以使其与 unicode 一起使用。 sendTextMessage 不会发送告诉运营商它不是 7 位 ascii 所需的特殊配置数据
  • @GabeSechan 不幸的是它也不起作用。我只是将上面代码中的 if 注释掉了,但它的行为完全一样。
  • 谷歌搜索,我看到很多报告说它在模拟器上坏了,但在设备上工作。您是否尝试过使用真实设备进行完整性检查?

标签: android android-emulator sms


【解决方案1】:

这似乎是模拟器中的一个错误:https://code.google.com/p/android/issues/detail?id=202723

虽然我没有立竿见影的解决方案,但值得一提的是 Emulator 2.0 包含一个用于向虚拟机发送 SMS 消息的 UI 设备,并且上述字符从发送时都可以正常工作 那个用户界面。如果您需要对接收设备进行一些测试(但 不发送)包含这些字符的 SMS 消息,应该 做这个伎俩,直到我们找到这个错误。您可以访问 作为工具 25.0 的一部分,来自预览发布通道的 Emulator 2.0。

【讨论】:

  • @MartijnPieters,在我为这个问题“量身定制”之后,我无法取消删除答案,所以我添加了一个新答案
猜你喜欢
  • 2017-07-09
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多