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

API 28下拒绝存储权限仍能写入外部存储的原因?

为什么拒绝存储权限后仍能在API28写入外部存储?

你遇到的情况完全符合Android的设计规则,核心原因在于你操作的是应用专属的外部存储目录,这类目录的读写根本不需要申请READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE权限——不管是API28还是更早的版本都是如此。

具体细节:

  • getExternalFilesDir(null)返回的路径是/sdcard/Android/data/[你的应用包名]/files/,属于应用的私有外部存储区域,系统默认允许应用直接读写自己的专属目录,不需要任何存储权限。
  • 你Manifest里配置的WRITE_EXTERNAL_STORAGE权限,是针对公共外部存储区域(比如根目录、Downloads、Pictures这类所有应用都能访问的目录)的。只有当你要读写这些公共区域时,才需要申请并获得权限,拒绝权限后操作才会失败。
  • 这个规则是Android的通用设计,和模拟器/真机无关,所以你在Firebase测试实验室的API28真机上测试也会得到同样的结果。

如果想验证权限控制的效果,你可以尝试写入公共外部存储目录(比如Environment.getExternalStorageDirectory()下的文件),这时候拒绝存储权限的话,写入操作就会因为权限不足而失败了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:25:55