在Android 10及更高版本中,使用contentResolver.delete()方法删除文件可能无法从文件系统中删除文件。这是因为Android 10及更高版本对于应用程序对共享存储的访问进行了更严格的限制。为了在Android 10及更高版本中删除文件,需要使用Storage Access Framework(SAF)。
以下是一个示例代码,演示如何通过SAF删除文件:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver resolver = context.getContentResolver();
Uri uri = MediaStore.Downloads.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Downloads.TITLE + "=?";
String[] selectionArgs = new String[]{fileName};
Cursor cursor = resolver.query(uri, null, selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
long id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Downloads._ID));
Uri contentUri = ContentUris.withAppendedId(uri, id);
resolver.delete(contentUri, null, null);
cursor.close();
return true;
}
} else {
// Use contentResolver.delete() for older Android versions
// ...
}
在Android Q及更高版本中,您需要执行以下步骤:
对于旧版本的Android,可以继续使用contentResolver.delete()方法删除文件。