解决方案 »
- 在notification中显示按钮 并添加点击事件
- 哪位能告诉一下,在ubuntu安装gitolite时,在最后一步骤gl-setup为什么失败?
- m7(CyanogenMod)源码3天没下完,有这么慢吗?
- 这个apk文件的功能是什么呢?
- android onclick事件跳转不了
- 在线求助一个带渐变,阴影效果的png图片的问题!
- 帮忙改下网络连接程序
- 如何在通话中唤醒屏幕
- 如何取得对话框的返回值
- mac配置React-Native的Android环境问题
- 两个android项目合并(整合)
- 求助!在Android平台下开发音乐播放器,怎样让系统自动扫描加载歌曲的时候扫描指定文件夹,还有下载歌曲的时候怎样下载到指定文件夹?
我猜是不是手机发送短信时根本就不是用这些编码呢?
试试用String来提取短信,看看有没有乱码。
Toast弹出content是乱码,都是“????”。
CbSmsMessage sms = msgs[0]; // Store the message in the content provider.
int pduCount = msgs.length;
StringBuilder body = new StringBuilder();
if (pduCount == 1) {
// There is only one part, so grab the body directly.
body.append(sms.getMessageBody());
} else {
// Build up the body from the parts.
for (int i = 0; i < pduCount; i++) {
sms = msgs[i];
body.append(sms.getMessageBody());
}
}
ContentResolver resolver = context.getContentResolver();
ContentValues values = getCBContentValue(sms, body.toString());
return resolver.insert(MESSAGE_URI, values);
}
这里面的body.toString()就是你要写入数据库的
你好,明白你的意思。
我想做的其实就是备份手机短信,当手机收到短信后通过程序将短信内容写入sdcard中。
唯一困扰的是备份中文短信后,打开sdcard中的文件就是乱码,可否提供思路,是在哪一步出差错导致了乱码的产生。
转个其它编码试试
content = new String(sms.getMessageBody(), "GBK");
或
content = new String(sms.getMessageBody(), "UTF-8");
等等。
是从pdu中取出短信数据
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
byte[] sms = (byte[]) p;
SmsMessage message = SmsMessage.createFromPdu(sms);
// 获取短信内容
String content = message.getMessageBody();我认为SmsMessage message = SmsMessage.createFromPdu(sms);这一步就是中文乱码产生的地方,但是具体不知道手机发送中文信息的默认编码是什么。很多第三方短信应用都可以正常收发中文短信,应该就是编码与解码导致乱码。