早上好,我遇到了一个我不明白的问题,让我解释一下:
我正在做一个基于微控制器Arduino和Android应用程序的项目。arduino从pop3命令中恢复邮件并将它们发送到Android应用程序。这两家公司仅通过短信进行通信。
问题是:我通过短信广播在Android上接收消息,然后恢复一个字符串( string )。
以下是邮件恢复对象的示例:
Re:舞台技巧=?iso-8859-1?Q?vari?=?iso-8859-1?b?6wvz?=非通信。
这将产生以下结果:
再:舞台技巧
需要注意的是,只有一些文本是用ISO编码的,似乎是以两种不同的方式编码的。
我的问题是:我如何解析文本?问题是,使用短信传输我没有选择类型的回报。下面是我用来读取文本消息的代码:
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
SmsMessage[] message = new SmsMessage[pdus.length];
String messageBody = null;
String phoneNumber = null;
for (int i=0; i< message.length;i++) {
message[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
messageBody = message[0].getMessageBody();
phoneNumber = message[0].getDisplayOriginatingAddress();
if (message.length > -1) {
if (phoneNumber.equals(arduino)) {
Toast.makeText(context, "New Data",Toast.LENGTH_SHORT ).show();
//this.abortBroadcast();
Log.d("BroadcastSMS", "***************phoneNumber:"+phoneNumber+" messageBody:"+messageBody);
//TODO : ici, que faire du message "messageBody" pour l'interpréter.
}
}
}我发现自己已经收到了一条信息,就像一个字符串。我的本能是尝试将自己编码为一个"shell“,但我不明白在这个示例中是如何编码"ed”的。澄清我的问题是:
但我可能走错了路,如果你有这些问题的答案或其他方法,你能帮我吗?
无论如何,先谢谢你。
JM
发布于 2013-04-04 10:29:21
它是RFC 2047编码的-字。Q指定引用的-可打印编码,而B用于base64。
https://stackoverflow.com/questions/15808139
复制相似问题