如何修复错误无法打开文件,路径 = '/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_handlerflutter 包。

非常感谢任何帮助!

谢谢,杰森。

【问题讨论】:

有任何错误或异常吗?请告诉什么是不工作的。 【参考方案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 权限被拒绝?

如何修复Django添加URL路径中的错误,找不到未链接到新代码

如何修复'require_once()无法打开流'