在Android 10中,使用Scoped Storage权限模型来限制应用程序对外部存储设备的访问。这意味着在Android 10中,应用程序无法直接删除外部存储上的多个文件,除非这些文件位于应用程序的私有目录中。
要删除多个文件,可以使用以下代码示例中的方法:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver resolver = context.getContentResolver();
Uri collection = MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
String selection = MediaStore.Downloads.DISPLAY_NAME + " LIKE ?";
String selectionArgs[] = new String[]{"%file_name%"};
resolver.delete(collection, selection, selectionArgs);
} else {
File dir = new File(Environment.getExternalStorageDirectory() + "/Download/");
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
if (file.getName().contains("file_name")) {
file.delete();
}
}
}
}
该代码示例通过ContentResolver在Android 10中删除具有特定文件名的多个文件。在旧版本的Android中,该示例使用File API删除文件。注意,该示例需要“android.permission.READ_EXTERNAL_STORAGE”和“android.permission.WRITE_EXTERNAL_STORAGE”权限。