android - 删除短信对话

标签 android database cursor sms android-4.4-kitkat

尝试使用号码删除整个对话,如下所示:

 mContext.getContentResolver().delete(Uri.parse("content://sms/"),"address="+Number, null);

但是什么也没发生,没有强制关闭并且没有删除,有什么帮助吗?,

谢谢

最佳答案

您需要分两步完成。像这样的东西:

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);

现在,进行多次删除。当您报告多重删除失败时 使用游标迭代(whilecursor.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"/>

关于android - 删除短信对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870824/

相关文章:

android - 如何在我的计算机上找到我的 SQLite 数据库文件?

java - 如何从句子中的数组列表中获取首次出现的任何单词的索引

android - 将微调器/下拉菜单添加到 Android 5.0 中的菜单栏

java - 在不使用 sql 或 nosql 服务器的情况下将数据提供程序集成到应用程序

SQL查询根据同一表中其他列的值从表中提取日期?

c - 为什么窗口不能正确设置光标?

android - 使用 CursorAdapter 为 ListView 中的新行设置动画

android - 在MPAndroidChart中,如何为Barchart中的每个Bar添加点击事件?

database - Couchdb 架构 : Views or documents?

java - 无法使用光标成功从数据库检索 Spinner 选定项目文本以填充我的应用程序中的联系人列表项目