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

MediaStore.Video.Media.EXTERNAL_CONTENT_URI查看多视频的替代方案

解决方案

你遇到的差异是第三方图库App对单媒体URI的处理逻辑不同:多数图库收到单图片URI时会自动加载同目录下的所有相邻媒体支持滑动,但是对单视频URI默认仅加载当前文件,不关联同目录其他视频。下面是两种可行实现方案:

方案1:自定义预览页面(兼容性最优,推荐)

完全不受第三方图库实现限制,可100%还原需求效果,实现步骤如下:

  1. 先查询指定相机文件夹下的所有媒体(可同时包含图片和视频),按添加时间倒序排列,查询代码示例:
// 替换为你的相机输出文件夹绝对路径
String cameraFolderPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath() + "/你的相机文件夹名/";
Uri queryUri = MediaStore.Files.getContentUri("external");
String[] projection = new String[]{
    MediaStore.MediaColumns._ID,
    MediaStore.MediaColumns.DISPLAY_NAME,
    MediaStore.MediaColumns.MIME_TYPE,
    MediaStore.MediaColumns.DATA
};
// 过滤出图片+视频,且属于指定文件夹的媒体
String selection = MediaStore.MediaColumns.MIME_TYPE + " LIKE ? OR " + MediaStore.MediaColumns.MIME_TYPE + " LIKE ? AND " + MediaStore.MediaColumns.DATA + " LIKE ?";
String[] selectionArgs = new String[]{"image/%", "video/%", "%" + cameraFolderPath + "%"};
// 按添加时间倒序,第一个就是最新媒体
String sortOrder = MediaStore.MediaColumns.DATE_ADDED + " DESC";
Cursor cursor = getContentResolver().query(queryUri, projection, selection, selectionArgs, sortOrder);
  1. 自定义预览Activity,用ViewPager2作为滑动容器,分别实现图片、视频的加载逻辑:图片可用Glide/Coil加载,视频可用ExoPlayer实现播放,将查询到的媒体列表传入适配器后,直接调用viewPager2.setCurrentItem(0, false)即可默认展示最新媒体,天然支持左右滑动切换所有同目录内容。

方案2:调用系统图库适配

如果不想自定义页面,可通过新增Intent参数实现,仅兼容支持该参数的系统图库:

if(!mediaId.equals("")){
    mediaUri = ContentUris.withAppendedId(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, Long.parseLong(mediaId));
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(mediaUri, "video/*");
// 指定默认打开的URI,部分图库会自动加载同目录所有视频
intent.putExtra(Intent.EXTRA_INITIAL_URI, mediaUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);

原有代码可优化点

  • 不要用MediaStore.Images.ImageColumns的列查询视频,会出现列找不到的异常,统一用MediaStore.MediaColumns下的通用列
  • 新增文件夹过滤条件,不要全局遍历所有媒体,避免不同文件夹同文件名冲突,同时提升查询效率
  • 新增排序条件直接拿到最新媒体,不需要遍历匹配文件名,性能更高

内容的提问来源于stack exchange,提问作者Shuba. . S hetty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:57:01