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

Android 13下Flutter应用Storage权限请求失败且无弹窗问题

Android 13 存储权限请求失败问题

问题详情

  • 系统版本:Android 13
  • 依赖版本:Flutter 3.3.10、permission_handler: ^10.2.0
  • 问题表现:执行代码await Permission.storage.request().isGranted时,始终返回false,且不弹出权限授权弹窗
  • 当前AndroidManifest.xml权限配置:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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.REQUEST_INSTALL_PACKAGES" tools:node="remove" />

<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="https" />
    </intent>
    <intent>
        <action android:name="android.intent.action.DIAL" />
        <data android:scheme="tel" />
    </intent>
    <intent>
        <action android:name="android.intent.action.SEND" />
        <data android:mimeType="*/*" />
    </intent>
</queries>

解决方案

  • Android 13(API 33)起,原有的READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限已被废弃,取而代之的是READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO这类细分媒体权限。但permission_handler的Permission.storage在Android 13上不会自动请求这些新权限,所以直接调用Permission.storage.request()无效。
  • 替换权限请求逻辑:根据实际需求,直接请求对应的媒体权限。比如需要访问图片就调用await Permission.photos.request().isGranted,视频用Permission.videos,音频用Permission.audio。
  • 关于写入权限:Android 13中,访问应用专属存储不需要WRITE_EXTERNAL_STORAGE权限;如果是操作公共媒体库的内容,直接通过MediaStore API即可,无需申请写入权限。
  • 如果之前用户已经拒绝过权限请求,系统会不再弹窗,直接返回false。这种情况需要引导用户到应用设置页面手动开启对应媒体权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:05:42