如何从Android中的收件箱中删除多条消息或单条消息?

时间:2012-11-05 09:12:55

标签: android message android-contentresolver

我在内容解析器的帮助下访问收件箱中的所有邮件但现在的问题是我要从收件箱中删除多条邮件或单条邮件。我发现所有消息的删除功能不是针对单个消息或多个消息。我将所有消息存储在ArrayList中。 任何帮助将不胜感激。

我的阅读消息代码是: -

Uri uriSMSURI = Uri.parse("content://sms/inbox");
Cursor cur = getContentResolver().query(uriSMSURI , null, null, null,
                null);
        startManagingCursor(cur);

        int size=cur.getCount();


        if (cur.moveToFirst()) 
        {

            for(int i=0;i<size;i++)
            {
                    InboxField tempInboxField = new InboxField();
                    tempInboxField.body = cur.getString(cur.getColumnIndexOrThrow("body"));
                    tempInboxField.protocol = cur.getString(cur.getColumnIndexOrThrow("protocol"));
                    tempInboxField.type =cur.getString(cur.getColumnIndexOrThrow("type"));
                    tempInboxField.status = cur.getInt(cur.getColumnIndexOrThrow("status"));
                    tempInboxField.address =cur.getString(cur.getColumnIndexOrThrow("address"));
                    String tempdate =cur.getString(cur.getColumnIndexOrThrow("date"));
                    tempInboxField.id = cur.getInt(cur.getColumnIndexOrThrow("_id"));
                    tempInboxField.person = cur.getString(cur.getColumnIndexOrThrow("person"));
                    Long timestamp = Long.parseLong(tempdate);    
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTimeInMillis(timestamp);
                    Date finaldate = calendar.getTime();
                    tempInboxField.date = finaldate.toString();
                    arrayList.add(tempInboxField);
                    cur.moveToNext();
                }

            }

1 个答案:

答案 0 :(得分:2)

您可以使用以下方法删除单个邮件:

Uri deleteUri = Uri.parse("content://sms");
int count = 0;
Cursor c = context.getContentResolver().query(deleteUri, null, null,
        null, null);
while (c.moveToNext()) {
   try {
   // Delete the SMS
   String pid = c.getString(0); // Get id;
   String uri = "content://sms/" + pid;
   count = context.getContentResolver().delete(Uri.parse(uri),
               null, null);
   } catch (Exception e) {

   }
}

如果您想删除会话话题,可以使用以下内容:

String uri = "content://sms/conversations/" + pid;
getContentResolver().delete(Uri.parse(uri), null, null);  

其中pid是线程的id。