我正在尝试从模拟器向模拟器发送短信。它可以工作,但只能使用非常有限的字符集(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