无法通过编程方式删除android上的短信

无法通过编程方式删除android上的短信,android,Android,在将我的应用升级到更高版本的Android时,我很困惑为什么我不能在Android 7.0到9.0版本上删除短信。它在Android版本6.0中运行良好 为什么我不能删除Android 9.0版中的所有消息 public void deleteSMS(Context context) { String message ="Notifier,"; try { Toast.makeText(context, "Deleting SMS f

在将我的应用升级到更高版本的Android时,我很困惑为什么我不能在Android 7.0到9.0版本上删除短信。它在Android版本6.0中运行良好

为什么我不能删除Android 9.0版中的所有消息

public void deleteSMS(Context context) {
    String message ="Notifier,";
    try {
        Toast.makeText(context, "Deleting SMS from inbox", Toast.LENGTH_SHORT).show();
        Uri uriSms = Uri.parse("content://sms/inbox");
        Cursor c = context.getContentResolver().query(uriSms,
                new String[] { "_id", "thread_id", "address",
                        "person", "date", "body" }, null, null, null);

        if (c != null && c.moveToFirst()) {
            do {
                long id = c.getLong(0);
                long threadId = c.getLong(1);
                String body = c.getString(5);

                if (message.equals(body)) {
                    Toast.makeText(context, "Deleting SMS with id: " + threadId, Toast.LENGTH_SHORT).show();
                    System.out.println ( threadId );

                    context.getContentResolver().delete(Uri.parse("content://sms/" + id), null, null);
                }
            } while (c.moveToNext());
        }
    } catch (Exception e) {
        Toast.makeText(context, "Could not delete SMS from inbox: " + e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}
从中,delete()方法需要三个参数。您提供的第一个参数是错误的。试试这个:


contentResolver.delete(Telephony.Sms.CONTENT\u URI,“\u id=“+Long.toString(i),null)

这可能会帮助你@CyrilleConMorales你能解释一下这个想法吗?因为我已经使用了那个链接中的代码,但我不明白为什么我不能删除邮件。非常感谢KitKat(安卓4.4),只有默认的短信应用程序具有对提供商的写入权限,因此只有它可以删除消息。我猜你还没有将你的应用程序配置并设置为默认短信应用程序,这就是为什么它在“安卓7.0至9.0版”上不起作用的原因,但这与你说它在“安卓6.0版”上起作用的说法不符,所以我不确定这些版本是否准确。@MikeM。我一直对默认的短信应用感到困惑,你是说?我需要将默认应用更改为我的设置吗?并将我的应用设置为默认消息?@MikeM。有必要写一个程序吗?以更改默认值。在我的手机设置中,我的应用程序未显示在默认消息应用程序列表中。谢谢你的回复。邮件不起作用:(。有人能告诉我或解释我为什么不删除更高版本的邮件吗?请