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

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。

解决步骤

  1. 升级permission_handler到最新稳定版
    旧版本权限映射未适配Android 13+(API33-35)的媒体权限细分规则,直接升级至pub仓库最新稳定版(如v10.4.0+),执行flutter pub get更新依赖。

  2. 确认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,无需保留。
  1. 清理API35模拟器缓存
    API35模拟器权限系统存在缓存问题,执行以下操作:
  • 卸载应用并清理模拟器缓存
  • 重启模拟器后重新安装应用
  1. 适配API版本(可选)
    若问题仍存在,将compileSdk和targetSdk升级至35(与模拟器API版本匹配):
android {
    compileSdk = 35
    defaultConfig {
        targetSdk = 35
        // 其余配置保持不变
    }
}
  1. 优化权限请求代码
    先检查权限状态再发起请求,避免重复请求导致异常:
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:53:10