【问题标题】:Delete a SMS Conversation删除短信对话
【发布时间】:2014-07-21 17:11:40
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: android database cursor sms android-4.4-kitkat


    【解决方案1】:

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

    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"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多