Android SDK 34下permission_handler无法请求视频权限的问题求助
Flutter permission_handler 请求视频权限报错(API35模拟器)
问题重现
执行await Permission.videos.request();时触发日志报错:
flutter: D/permissions_handler(22246): No permissions found in manifest for: []32
仅视频权限请求失败,照片、音频权限可正常工作,已在AndroidManifest.xml中声明READ_MEDIA_VIDEO,当前使用compileSdk 34。
解决步骤
升级permission_handler到最新稳定版
旧版本权限映射未适配Android 13+(API33-35)的媒体权限细分规则,直接升级至pub仓库最新稳定版(如v10.4.0+),执行flutter pub get更新依赖。确认AndroidManifest权限声明有效性
- 确保
READ_MEDIA_VIDEO权限声明在<application>标签外部,且未被tools:node="remove"等属性意外移除:<!-- 正确位置:manifest根节点下,application标签之前 --> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/> - 可删除不必要的废弃权限(避免混淆):Android13+已废弃
READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE,无需保留。
- 清理API35模拟器缓存
API35模拟器权限系统存在缓存问题,执行以下操作:
- 卸载应用并清理模拟器缓存
- 重启模拟器后重新安装应用
- 适配API版本(可选)
若问题仍存在,将compileSdk和targetSdk升级至35(与模拟器API版本匹配):
android { compileSdk = 35 defaultConfig { targetSdk = 35 // 其余配置保持不变 } }
- 优化权限请求代码
先检查权限状态再发起请求,避免重复请求导致异常:
Future<void> requestVideoPermission() async { final status = await Permission.videos.status; if (status.isDenied || status.isRestricted) { final result = await Permission.videos.request(); print("视频权限请求结果:$result"); } }
关键说明
日志中的[]32是permission_handler内部对Permission.videos的常量标识,报错本质是包无法在Manifest中找到对应权限声明,核心原因是权限映射不匹配或Manifest配置无效。
内容的提问来源于stack exchange,提问作者Spencer
相关产品推荐
相关产品推荐

