【发布时间】:2014-07-21 17:11:40
【问题描述】:
尝试使用数字删除整个对话,如下所示:
mContext.getContentResolver().delete(Uri.parse("content://sms/"),"address="+Number, null);
但什么也没发生,没有强制关闭,也没有删除,有什么帮助吗?,
谢谢
【问题讨论】:
标签: android database cursor sms android-4.4-kitkat
尝试使用数字删除整个对话,如下所示:
mContext.getContentResolver().delete(Uri.parse("content://sms/"),"address="+Number, null);
但什么也没发生,没有强制关闭,也没有删除,有什么帮助吗?,
谢谢
【问题讨论】:
标签: android database cursor sms android-4.4-kitkat
您需要分两步完成。像这样:
A.通过地址查询短信数据库,获取短信ID:
String numberFilter = "address='"+ phoneNumber + "'";
String messageid = null;
Cursor cursor = mContext.getContentResolver().query(Uri.parse("content://sms/"),
null, numberFilter, null, null);
if (cursor.moveToFirst()) {
messageid = cursor.getString(0);
}
B.使用消息ID删除短信:
getContentResolver().delete(Uri.parse("content://sms/" + messageid), null, null);
现在,进行多次删除。当您报告多重删除失败时
使用游标迭代 (while cursor.moveToFirst())。我从未尝试过,但我认为
这与删除后光标失效有关。尝试在每次删除之前重新启动光标,如下所示:
for (;;) {
// restart cursor before each delete
String messageid = null;
Cursor cursor = mContext.getContentResolver().query(Uri.parse("content://sms/"),
null, numberFilter, null, null);
if (!cursor.moveToFirst()) {
break; // nothing more to delete
}
// delete single record
messageid = cursor.getString(0);
getContentResolver().delete(Uri.parse("content://sms/" + messageid), null, null);
}
您需要写短信权限:
<uses-permission android:name="android.permission.WRITE_SMS"/>
【讨论】: