安卓10.0版本文件读写,其他外部文件访问

存储读取权限,并且App动态获得了权限,在通过绝对路径打开文件时,也有可能出现 open failed: EACCES (Permission denied) 权限不足的错误。
这里官方文档的解释是:以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了对外部存储设备的分区访问权限(即分区存储)。此类应用只能看到本应用专有的目录(通过 Context.getExternalFilesDir() 访问)以及特定类型的媒体。
这种分区存储限制了应用通过绝对路径去打开文件,不能通过File file = new File(filePath)去打开,这类路径不具有直接内核访问权限。要访问此类文件,应用必须使用 MediaStore,并调用 openFile() 等方法。
如果不得不从绝对路径中打开文件,可以通过在 Manifest 的 application 标签里面加上

 android:requestLegacyExternalStorage="true"
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 随机访问文件 文件操作 java.io 定义的大多数类都是流式操作,但 File 类不是。它直接处理文件和文件系统...
    灰PatrickStar阅读 883评论 0 0
  • 最近碰到一个项目要用到Android文件的存取,之前也一直没有完全搞清楚。最近整理了一下给大家一起分享,也希望大家...
    kachidokima阅读 1,105评论 3 12
  • 1.Android文件的操作模式 在java中要想对文件做读写操作,只需创建 文件,读写数据即可,Android却...
    JuSong阅读 975评论 0 0
  • 文件和目录 函数stat、fstat、fstatat和lstat 4个stat函数主要用于返回文件的信息结构 st...
    yuq329阅读 114评论 0 0
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,757评论 0 5