Android应用无法写入下载目录:java.io.FileNotFoundException权限被拒绝

问题描述

我有一个旧应用,该应用使用以下几行将APK下载到设备下载目录中:

File downloadsDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File outputFile = new File(downloadsDirectory,"appname.apk");
FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
// ...

我不确定这些行是否有效,但是根据客户的说法,确实行得通。因此,现在我坚持维护该应用程序,我必须找出一种使它再次运行的方法。通过以上几行,我收到以下错误消息:

E/my.appname.services.UpdateService: downloading of latest release failed
    my.appname.exceptions.NetworkException: java.io.FileNotFoundException: /storage/emulated/0/Download/appname.apk (Permission denied)
        at my.appname.services.UpdateRepository.download(UpdateRepository.java:89)
        at my.appname.services.UpdateService.onUpdateFound(UpdateService.java:78)
        at my.appname.services.UpdateService.checkForUpdates(UpdateService.java:61)
        at my.appname.services.UpdateService.onHandleIntent(UpdateService.java:48)
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:68)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65)
     Caused by: java.io.FileNotFoundException: /storage/emulated/0/Download/appname.apk (Permission denied)
        at java.io.FileOutputStream.open0(Native Method)
        at java.io.FileOutputStream.open(FileOutputStream.java:287)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:223)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
        at my.appname.services.UpdateRepository.download(UpdateRepository.java:81)
        at my.appname.services.UpdateService.onUpdateFound(UpdateService.java:78) 
        at my.appname.services.UpdateService.checkForUpdates(UpdateService.java:61) 
        at my.appname.services.UpdateService.onHandleIntent(UpdateService.java:48) 
        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:68) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 

鉴于该应用程序已经很老了,我立即怀疑缺少某些权限,并且清单中确实没有android.permission.WRITE_EXTERNAL_STORAGEandroid.permission.READ_EXTERNAL_STORAGE整个内容。但是即使添加了这些内容,我仍然会收到相同的错误消息。

任何想法,要访问下载目录可能还会缺少什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)