Android 10 无法读取本地文件 FileNotFoundException: Permission denied 解决办法

最近在一款android10的系统上,运行之前android8.1的应用时,偶然发现 android10 以下可以正常读取本地文件,android 10 却提示 Permission denied 于是翻阅官方文档,忙活半天终于找到了原因!

相关链接:Android 10 管理分区外部存储访问

解决办法:

Mainfest Application中加入这一行   android:requestLegacyExternalStorage="true"

官方的解释:

分区存储

为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用,开启了分区存储权限。此类应用只能访问外部存储空间上的应用专属目录,以及本应用所创建的特定类型的媒体文件,以及内部存储空间上的本身目录。一句话,解释就是,不能像之前一样,一句代码getExternalStorageDirectory,就可以任意去写入、读取sd卡了。

针对android10的临时关闭方法

如果您的应用以 Android 10(API 级别 29)或更低版本为目标平台,您可以暂时在正式版应用中停用分区存储。不过,如果您以 Android 10 为目标平台,则需要在应用的清单文件中将 requestLegacyExternalStorage 的值设置为 true:

<manifest ... >
  <!-- This attribute is "false" by default on apps targeting
       Android 10. -->
  <application android:requestLegacyExternalStorage="true" ... >
    ...
  </application>
</manifest>

android 10上,可以通过这个属性,临时关闭分区存储,但是不建议这样做,为什么?请看官方下一句话

android 11将强制使用分区存储

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容