如何删除Android 5.0版棒棒糖或Kitkat中的特定收件箱邮件?

时间:2015-11-07 05:00:18

标签: android sms android-4.4-kitkat android-5.1.1-lollipop

我正在删除电话号码任务的特定短信。当我在motog或Android 5.0版的手机上测试时。我无法删除特定号码的短信。我的代码段在下面。

public void deleteSMS(Context context,String number) {
    try {
        Log.d("","Deleting SMS from inbox");
        Uri uriSms = Uri.parse("content://sms/inbox");
        Cursor c = context.getContentResolver().query(uriSms,
                new String[] { "_id", "thread_id", "address",
                        "person", "date", "body" }, "address = '"+number+"'", null, null);

        if (c != null && c.moveToFirst()) {
            do {
                long id = c.getLong(0);
                long threadId = c.getLong(1);
                String address = c.getString(2);
                String body = c.getString(5);
                Toast.makeText(getApplicationContext(),"SMS with id: " + threadId +" Number:- " +address,Toast.LENGTH_LONG).show();
                Log.d("", "SMS with id: " + threadId +" Number:- " +address);
                if ( address.equals(number)) {
                    Log.d("", "Deleting SMS with id: " + threadId);
                    context.getContentResolver().delete(
                            Uri.parse("content://sms/" + id), null, null);
                }
            } while (c.moveToNext());
        }
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(),"Could not delete SMS from inbox ",Toast.LENGTH_LONG).show();
        Log.e("", "Could not delete SMS from inbox: " + e.getMessage());
    }
}

1 个答案:

答案 0 :(得分:9)

4.4之后,除非您的应用是“默认短信应用”,否则不允许从收件箱中删除任何短信。

  

从Android 4.4开始,系统设置允许用户选择“默认短信应用”。一旦选中,只有默认的SMS应用程序能够写入SMS提供程序,并且当用户收到SMS或当用户收到MMS时,只有默认SMS应用程序接收SMS_DELIVER_ACTION广播时才会收到SMS或WAP_PUSH_DELIVER_ACTION广播。默认的SMS应用程序负责在收到或发送新消息时向SMS提供商写入详细信息。

     

未选择作为默认短信应用的其他应用只能阅读   SMS提供商 ...

You can see More info here 刚才提到了以下重要部分:

  

如果您的应用程序设计为默认的SMS应用程序,那么当您的应用程序未被选为默认应用程序时,了解应用程序的限制并根据需要禁用功能非常重要。虽然系统将发送的SMS消息写入SMS提供商,而您的应用程序不是默认的SMS应用程序,但它不会写入已发送的MMS消息,并且您的应用程序无法写入SMS提供程序进行其他操作,例如将消息标记为草稿,将它们标记为已读,删除它们等。