Android 开发问题:/storage/emulated/0/...: open failed: EACCES (Permission denied)

📅 2026/7/12 23:48:43 👁️ 阅读次数 📝 编程学习
Android 开发问题:/storage/emulated/0/...: open failed: EACCES (Permission denied)
  • 在 Android 开发中,出现如下错误信息
java.io.FileNotFoundException: /storage/emulated/0/...: open failed: EACCES (Permission denied)
问题原因
  1. 权限问题,EACCES (Permission denied)表示系统拒绝了文件访问请求

  2. Android 11 以下,必须动态申请读写权限,READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE权限

  3. Android 11 即以上,Google 引入了分区存储,直接访问外部存储受到严格限制

处理策略
  • 强行方案是申请MANAGE_EXTERNAL_STORAGE权限
<uses-permissionandroid:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.R){// Android 11 及以上booleanisExternalManager=Environment.isExternalStorageManager();Log.i(TAG,"isExternalManager: "+isExternalManager);if(isExternalManager){// 已拥有权限}else{// 请求权限Intentintent=newIntent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);startActivity(intent);}}else{// Android 10 及以下,不需要此权限}
  • 注:MANAGE_EXTERNAL_STORAGE权限包含了READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE权限