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

Flutter 3.0.5+Android SDK33:Image Picker不请求相册权限求助

解决Image Picker在Android 13不请求权限的问题

核心原因

Android 13(API 33)对媒体权限做了拆分,不再沿用旧版的READ_EXTERNAL_STORAGE权限,而是需要针对性的媒体访问权限。你当前的AndroidManifest.xml仅配置了INTERNET权限,完全缺失相册相关权限,这是导致组件不请求权限的根本原因。

具体修复步骤

  1. 补充权限配置
    在android/app/src/main/AndroidManifest.xml的<manifest>标签内添加以下权限:

    <!-- 适配Android 13及以上版本的图片/视频访问权限 -->
    <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" android:maxSdkVersion="32" />
    

    若仅需访问图片,可只保留READ_MEDIA_IMAGES权限。

  2. 确认Image Picker版本适配
    检查pubspec.yaml中的image_picker依赖版本,建议使用适配Android 13的版本(如>=0.8.6),旧版本可能未处理新权限逻辑。更新后执行:

    flutter pub get
    
  3. 规范调用逻辑
    确保调用Image Picker的方法正确,选择图片时使用以下代码即可自动触发权限请求:

    final XFile? image = await ImagePicker().pickImage(source: ImageSource.gallery);
    
  4. 彻底清理重建项目
    执行以下命令确保缓存和构建文件完全更新:

    flutter clean
    flutter pub get
    cd android && ./gradlew clean && cd ..
    flutter run
    

额外说明

Android 13中访问相册无需WRITE_EXTERNAL_STORAGE权限,仅在需要写入媒体文件时才需配置该权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:09:21