存储读取权限,并且App动态获得了权限,在通过绝对路径打开文件时,也有可能出现 open failed:_android 10 ope">
当前位置:   article > 正文

关于Android 10 访问文件出现 open failed: EACCES (Permission denied)_android 10 open failed: eacces (permission denied)

android 10 open failed: eacces (permission denied)

Android 10 中即使在 Manifest 里面申请了

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • 1
  • 2

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

android:requestLegacyExternalStorage="true"
  • 1

来使用旧版本的存储规则。
Android文档

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签