Flutter 3.0.5+Android SDK33:Image Picker不请求相册权限求助
解决Image Picker在Android 13不请求权限的问题
核心原因
Android 13(API 33)对媒体权限做了拆分,不再沿用旧版的READ_EXTERNAL_STORAGE权限,而是需要针对性的媒体访问权限。你当前的AndroidManifest.xml仅配置了INTERNET权限,完全缺失相册相关权限,这是导致组件不请求权限的根本原因。
具体修复步骤
补充权限配置
在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权限。确认Image Picker版本适配
检查pubspec.yaml中的image_picker依赖版本,建议使用适配Android 13的版本(如>=0.8.6),旧版本可能未处理新权限逻辑。更新后执行:flutter pub get规范调用逻辑
确保调用Image Picker的方法正确,选择图片时使用以下代码即可自动触发权限请求:final XFile? image = await ImagePicker().pickImage(source: ImageSource.gallery);彻底清理重建项目
执行以下命令确保缓存和构建文件完全更新:flutter clean flutter pub get cd android && ./gradlew clean && cd .. flutter run
额外说明
Android 13中访问相册无需WRITE_EXTERNAL_STORAGE权限,仅在需要写入媒体文件时才需配置该权限。
内容的提问来源于stack exchange,提问作者Niko Santos
相关产品推荐
相关产品推荐

