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

Flutter Android端如何申请/Music文件夹读写权限替代manageExternalStorage

Android /Music 目录访问授权方案(替代MANAGE_EXTERNAL_STORAGE)

MANAGE_EXTERNAL_STORAGE是全量文件访问权限,谷歌应用商店对该权限的审核门槛极高,仅面向核心功能必须访问全存储目录的应用(如文件管理器、备份工具)开放,普通应用申请该权限大概率会被拒,完全没必要为了读写Music目录申请这个权限。

针对你的需求,有两个合规的实现方案,都不需要全量存储权限:

  • 方案一:仅需读写Music目录下的音频文件(适配Android 13及以上)
    直接申请READ_MEDIA_AUDIO运行时权限即可,这个权限是Android 13之后拆分的媒体专属权限,授权后可通过MediaStore接口对公共Music目录下的所有音频文件执行读写、修改、删除操作,授权提示敏感度低,完全符合平台政策。

    注意:这个方案仅支持操作音频类媒体文件,如果需要在Music目录下创建自定义格式文件、新建子目录做灵活的文件管理,用下面的方案。

  • 方案二:全版本通用的精准目录授权
    用Android系统自带的存储访问框架(SAF)定向申请/Music目录的访问权限即可,不需要依赖permissions包提供的运行时权限能力:
    1. 发起ACTION_OPEN_DOCUMENT_TREE系统意图,初始路径直接定向到公共Music目录,用户确认授权后,应用即可拿到该目录的持久化读写权限
    2. 拿到授权后将权限标识做本地持久化,后续不需要重复申请,就可以对该目录下的所有文件、子文件夹做完整的增删改查操作
    3. 该方案的授权范围仅限你指定的Music目录,不会获取整个存储的访问权限,用户接受度高,不存在应用商店审核风险。

关于你提到的permissions包没有对应权限类型的问题:

  • 这个包封装的都是Android系统的标准运行时权限,而SAF目录授权属于系统文档交互能力,不属于普通运行时权限范畴,自然没有内置相关封装。你可以直接通过Method Channel调用原生SAF逻辑实现,也可以使用Flutter生态中封装了SAF能力的插件完成,不需要编写大量原生代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:45:31