解决方案 »
- 在android listview中,我如何显示类型不同的item,
- android虚拟机能在retina MacBook pro上跑吗?
- 请教高手一个问题!
- 求助!图片涂鸦功能
- 求指教
- Android Http request 报 IOExcepiton
- 求解决一个利用HttpClient4用post连接服务器的问题,已经可以读服务器,服务器却不能收到post参数
- qq空间评论功能的实现细节(android版qq)
- 小米手机无法使用WindowManager的addView,怎么解决
- Android Studio 还是API 要入门的选择?
- 两个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);这一步就是中文乱码产生的地方,但是具体不知道手机发送中文信息的默认编码是什么。很多第三方短信应用都可以正常收发中文短信,应该就是编码与解码导致乱码。