如何修复错误无法打开文件,路径 = '/storage/emulated/0/DCIM/Camera/20200818_123041.jpg'(操作系统错误:权限被拒绝,errno = 13)
Posted
技术标签:
【中文标题】如何修复错误无法打开文件,路径 = \'/storage/emulated/0/DCIM/Camera/20200818_123041.jpg\'(操作系统错误:权限被拒绝,errno = 13)【英文标题】:How to fix the error Cannot open file, path = '/storage/emulated/0/DCIM/Camera/20200818_123041.jpg' (OS Error: Permission denied, errno = 13)如何修复错误无法打开文件,路径 = '/storage/emulated/0/DCIM/Camera/20200818_123041.jpg'(操作系统错误:权限被拒绝,errno = 13) 【发布时间】:2020-12-08 10:43:50 【问题描述】:我试图让用户从他们设备上的照片库中挑选一张图片。
我之前的代码运行良好,但现在我必须将 targetSdkVersion 从 28 更新到 29,它不再运行了。
我已经尝试添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
但仍然无法正常工作。还尝试使用permission_handler
flutter 包。
非常感谢任何帮助!
谢谢,杰森。
【问题讨论】:
有任何错误或异常吗?请告诉什么是不工作的。 【参考方案1】:如果您使用permission_handler
并且您写道:
if (!status.isGranted) await Permission.storage.request();
应用程序请求许可?
您可以在if
语句之前、条件中和if
语句之后编写print
【讨论】:
【参考方案2】:我最终设法解决了我的问题。我需要在 android manifest 中设置 android:requestLegacyExternalStorage="true"
,并将 compileSdkVersion
更改为 29(它仍然在 28,即使我已将 targetSdkVersion
更改为 29) - 你必须需要在应用程序中更改两者级别 build.gradle。
希望这对某人有所帮助,很高兴我解决了我的问题!
【讨论】:
这是一个临时解决方案【参考方案3】:需要对您的 android 清单文件授予权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
And also use this for flutter
按照上述链接执行所有步骤。
【讨论】:
以上是关于如何修复错误无法打开文件,路径 = '/storage/emulated/0/DCIM/Camera/20200818_123041.jpg'(操作系统错误:权限被拒绝,errno = 13)的主要内容,如果未能解决你的问题,请参考以下文章
file_get_contents() 如何修复错误“无法打开流”、“没有这样的文件”
尽管提供了所需的路径,如何修复“无法在您的路径中找到 Git”错误
如何修复 PyAudio、PortAudio 的安装问题:“致命错误 C1083:无法打开包含文件:'portaudio.h':没有这样的文件或目录”
如何修复错误:无法打开 laravel.log 权限被拒绝?