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

Flutter应用在Android 13上的存储权限问题求助

解决Flutter应用在Android 13上的存储权限问题

1. 适配Android 13的权限声明

Android 13(API 33)彻底重构了存储权限体系,原有的READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限在该版本上已失效,必须根据你的文件访问需求替换为对应细分权限:

  • 访问图片/照片:添加READ_MEDIA_IMAGES
  • 访问视频:添加READ_MEDIA_VIDEO
  • 访问音频:添加READ_MEDIA_AUDIO
  • 仅当需要访问所有文件(如文件管理器类应用)时,才保留MANAGE_EXTERNAL_STORAGE,但这个权限需要引导用户手动到系统设置开启,且Google Play审核会严格限制使用场景

修改后的AndroidManifest.xml示例:

<!-- 兼容Android 12及以下版本 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

<!-- Android 13+ 对应细分权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />

<!-- 仅全文件访问场景需要 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />

2. 调整Flutter权限请求代码

你当前使用的Permission.storage在Android 13上已无法正常请求权限,需根据需求替换为对应权限(依赖permission_handler包,确保版本≥10.0.0):

场景1:仅访问媒体文件(图片/视频/音频)

修改main.dart中的权限请求逻辑:

onInit: () async {
  try {
    // 根据实际需求选择权限:photos/videos/audio
    var status = await Permission.photos.request();
    if (status.isGranted) {
      print('权限已授予');
    } else if (status.isPermanentlyDenied) {
      openAppSettings();
    }
  } catch (e) {
    print('权限请求错误: $e');
  }
},

场景2:需要全存储访问权限

如果必须访问外部存储所有文件,需请求MANAGE_EXTERNAL_STORAGE权限,并引导用户到系统设置开启:

onInit: () async {
  try {
    var status = await Permission.manageExternalStorage.request();
    if (status.isGranted) {
      print('全存储权限已授予');
    } else {
      openAppSettings();
    }
  } catch (e) {
    print('权限请求错误: $e');
  }
},

3. 关键注意事项

  • 优先使用细分媒体权限,避免使用MANAGE_EXTERNAL_STORAGE,后者不符合Android存储最佳实践,且Google Play审核难度大
  • 确保permission_handler包更新到最新稳定版,旧版本不支持Android 13的新权限模型
  • 测试时必须在Android 13真机上验证权限弹窗和文件访问逻辑,模拟器可能存在权限模拟偏差

内容的提问来源于stack exchange,提问作者manthan donga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:47:00