Android-FileNotFoundException打开失败:EACCES(权限被拒绝)

时间:2020-01-19 10:44:12

标签: android filenotfoundexception samsung-galaxy

我有一个应用程序,可以在登录名中从服务器下载图像。 第一次登录时,一切正常,但是当我卸载应用程序并再次安装时,出现此异常:

java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.gilapp.android.app/files/images/book_118.png: 打开失败:EACCES(权限被拒绝)

并且无法保存图像。

这是在我尝试创建输出流时发生的:

OutputStream output = new FileOutputStream(filePath);

在转到应用信息->存储->清除数据

之后,当我进行第二次安装时,图像下载正常

另一个重要的一点是,它仅发生在三星的平板电脑中:SM-T800 (API level 23)

在其他设备上没有发生,我测试过的设备:Samsung SM-G900H (API level 23)Asus P028 (API level 24)Samsung SM-G950F (API level 28)

3 个答案:

答案 0 :(得分:7)

如果您的应用程序指向的是Android 10及更高版本

在清单中的应用程序下面添加


android:requestLegacyExternalStorage="true"


答案 1 :(得分:1)

您需要获取Run-time permission才能写入存储。在保存文件之前,请检查权限。还有一些用于此工作的库:Android-Arsenal

最好使用FileProvider访问存储中的文件。

答案 2 :(得分:1)

在卸载应用程序时,getExternalFilesDir()中的所有文件都将被删除,因此/images目录消失了

重新安装后,您可以再次将文件写入不需要任何权限的目录。

不是在运行时。不在清单中。

但是您希望它们位于.... / images目录中。

您必须自己照顾该目录。

检查目录是否存在,然后创建目录,然后再尝试将文件放入其中。