如何以编程方式删除Android中的短信?或者,是否可以在目标sdk上将删除短信设置为26?

时间:2018-08-03 09:38:55

标签: android sms android-contentresolver android-sms

在我们的应用程序中,有一个功能可以通过编程方式删除SMS。 应用程序目标SDK版本为26 。而且我将默认SMS应用程序更改为设备上可用的默认SMS应用程序。我尝试了下面的代码。

要求:删除所有短信和彩信所需的代码

第一个:

public boolean deleteSms() {
        Cursor c = getApplicationContext().getContentResolver().query(Uri.parse("content://sms/"), new String[]{"_id", "thread_id", "address", "person", "date", "body"}, null, null, null);
        try {
            while (c.moveToNext()) {
                int id = c.getInt(0);
                String address = c.getString(2);
                this.getContentResolver().delete(
                        Uri.parse("content://sms/" + id), null, null);
                isSmsDeleted = true;
            }

        } catch (Exception ex) {
            isSmsDeleted = false;
        }
        return isSmsDeleted;
    }

并且我尝试了另一个功能

private int deleteSms() {
        try {
            ContentResolver localContentResolver = context.getContentResolver();
            Uri localUri = Uri.parse("content://sms");
            return localContentResolver.delete(localUri, null, null);
        } catch (Exception e) {
            Log.e(TAG, e.getMessage(), e);
        }
        return 0;
    }

我的清单权限为

<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />

当我调试上面的代码return localContentResolver.delete(localUri, null, null);时,它返回0。并且两种功能均不起作用

经过测试的设备:Google Pixel 2Xl版本8.1和MIUI Redmi 5版本7.1.2

0 个答案:

没有答案