我正在编写BroadcastReceiver来接收短信。我需要将消息与用户在设置中设置的字符串进行比较,但字符串可以是非ASCII。以下代码仅适用于仅包含ASCII字符的SMS-es。如何将邮件转换为UTF8编码?
public class SmsReceiver extends BroadcastReceiver {
final static String TAG = "SmsReceiver";
public SmsReceiver() {
}
@Override
public void onReceive(final Context context, final Intent intent) {
final Bundle bundle = intent.getExtras();
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
final SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
final String senderNum = currentMessage.getDisplayOriginatingAddress();
final String message = currentMessage.getDisplayMessageBody();
Log.i(TAG, "senderNum: " + senderNum + "; message: " + message);
更新
似乎相同的代码在我的Nexus5上运行,但在使用API 10的模拟器中不起作用。
我发送的文字:שלום
我收到的文字:éRΨ¿Ñ u$
答案 0 :(得分:0)
为了记录,如果其他人遇到类似的问题,它似乎是模拟器中的一个错误。我为Android模拟器打开了一张票: https://code.google.com/p/android/issues/detail?id=202723