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

Flutter中使用photoManager无法获取视频问题求助

问题定位与修复方案

核心问题:权限请求仅申请了图片权限

你代码里的PermissionRequestOption中,AndroidPermission的type设置为RequestType(1),这对应RequestType.image枚举值,只申请了访问图片的权限——即便后续调用getAssetPathList时指定RequestType.all,权限不足也无法获取视频资源。

修复步骤:

1. 修正权限请求的媒体类型

将权限请求中的type改为RequestType.all,确保同时申请图片和视频的访问权限:

final PermissionRequestOption requestOption = PermissionRequestOption(
  androidPermission: const AndroidPermission(
    type: RequestType.all, // 替换原有的RequestType(1)
    mediaLocation: false,
  ),
);

2. 确认Android权限配置正确

  • Android 13及以上版本,在AndroidManifest.xml中添加:
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
    
  • Android 12及以下版本,添加:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    

3. 优化「Recent」相册的获取逻辑

不同设备系统语言不同,相册名称可能不是"Recent"(比如中文设备显示「最近」),建议通过isAll属性判断——当getAssetPathList设置hasAll: true时,会返回一个包含所有媒体的相册,其isAll为true,这种方式更可靠:

AssetPathEntity recentAlbum = paths.firstWhere(
  (album) => album.isAll, // 替换原有的名称判断逻辑
  orElse: () => paths.first,
);

4. 验证视频资源获取

修改后重新运行,videoMedia列表应能正确返回设备中的视频文件,界面上的视频图标也会正常显示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:32:20