最近在做Android 里面的短信(SMS)导入/导出的功能,就是导出到XML里面,再恢复回去。不过在导入的时候,明明已经插入进SQLite数据库了,可是在短信列表里面死活就是不显示出来~在不指定id的情况下,如果我用手机收到一条短信的话(该短信id为1),其他刚才导入的短信也都显示出来了,真是奇怪~难道是我导入短信的时候有什么标识、字段没有插完整?求解。下面是我导入的代码(部分): private void restoreMessage() {
ContentResolver cr = getContentResolver();
for (int i : result) {
Message message = list.get(i);
try {
// 主题
if (message.getId() == message.getThread_id()) {
Uri threadUri = Sms.addMessageToUri(cr, Sms.CONTENT_URI, message.getAddress(),
message.getBody(), message.getSubject(),
Long.valueOf(message.getDate()), true, true);
for (int j = 0; j < result.size(); j++) {
Message tmp = list.get(j);
// 跳过当前
if (tmp.getId() == message.getId()) {
continue;
}
if (tmp.getThread_id() == message.getId()) {
Sms.addMessageToUri(cr, threadUri, tmp.getAddress(), tmp.getBody(),
null, Long.valueOf(tmp.getDate()), true, false,0);
}
}
} } catch (Exception e) {
Log(e.getStackTrace());
}
}
Toast.makeText(getApplicationContext(), result.size() + " imported.", Toast.LENGTH_SHORT)
.show();
}
ContentResolver cr = getContentResolver();
for (int i : result) {
Message message = list.get(i);
try {
// 主题
if (message.getId() == message.getThread_id()) {
Uri threadUri = Sms.addMessageToUri(cr, Sms.CONTENT_URI, message.getAddress(),
message.getBody(), message.getSubject(),
Long.valueOf(message.getDate()), true, true);
for (int j = 0; j < result.size(); j++) {
Message tmp = list.get(j);
// 跳过当前
if (tmp.getId() == message.getId()) {
continue;
}
if (tmp.getThread_id() == message.getId()) {
Sms.addMessageToUri(cr, threadUri, tmp.getAddress(), tmp.getBody(),
null, Long.valueOf(tmp.getDate()), true, false,0);
}
}
} } catch (Exception e) {
Log(e.getStackTrace());
}
}
Toast.makeText(getApplicationContext(), result.size() + " imported.", Toast.LENGTH_SHORT)
.show();
}
372 + Sms.Inbox.addMessage(cr, message.getAddress(), message.getBody(), null,
373 + Long.valueOf(message.getDate()), true);
374 + } else {
375 + Sms.Outbox.addMessage(cr, message.getAddress(), message.getBody(), null,
376 + Long.valueOf(message.getDate()), true, -1L);
377 + }
去看看MMS 是怎么呈现短信列表的源码就知道了~