You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化MediaStore查询语句并筛选特定大小以上的全部文件

Android MediaStore 查询优化与文件大小筛选

简化Selection字符串

你原来的写法逐个枚举媒体类型,不仅冗余还容易出现语法错误(比如代码里OR前面没加空格,会导致SQL语法错误)。可以用SQL的IN操作符简化,把所有需要包含的媒体类型一次性列出来,同时推荐用selectionArgs传递参数,避免硬编码的潜在问题:

// 简化后的selection,用IN包含所有目标媒体类型
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + " IN (?, ?, ?, ?)";
// 对应selection的参数,依次为无媒体类型、图片、视频、音频
String[] selectionArgs = new String[]{
    String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_NONE),
    String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE),
    String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO),
    String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_AUDIO)
};

添加文件大小筛选

要筛选大于特定大小的文件,只需在selection中添加AND条件判断SIZE列大于目标值,同时将大小参数加入selectionArgs。以下是完整示例(以筛选大于1MB的文件为例):

ContentResolver cr = context.getContentResolver();
Uri uri = MediaStore.Files.getContentUri("external");

// 只查询需要的列,避免性能浪费
String[] projection = new String[]{
    MediaStore.Files.FileColumns._ID,
    MediaStore.Files.FileColumns.DATA,
    MediaStore.Files.FileColumns.SIZE,
    MediaStore.Files.FileColumns.MEDIA_TYPE
};

long minFileSize = 1024 * 1024; // 1MB,可按需修改
// 组合媒体类型筛选和大小筛选条件
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + " IN (?, ?, ?, ?) AND "
        + MediaStore.Files.FileColumns.SIZE + " > ?";
String[] selectionArgs = new String[]{
    String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_NONE),
    String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE),
    String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO),
    String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_AUDIO),
    String.valueOf(minFileSize)
};

// 可选:按文件大小降序排序
String sortOrder = MediaStore.Files.FileColumns.SIZE + " DESC";
Cursor allFiles = cr.query(uri, projection, selection, selectionArgs, sortOrder);

额外注意事项

  • 不要将projection设为null,这会查询所有列造成性能浪费,只查询实际需要的字段即可。
  • 权限要求:Android 10及以上版本需申请READ_EXTERNAL_STORAGE权限;Android 13+查询全部文件仍需该权限,细分媒体类型权限仅针对单独类型查询生效。

内容的提问来源于stack exchange,提问作者lanezalbryt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 01:54:21