在android中找不到下载管理器下载的文件

时间:2013-12-12 22:26:43

标签: android android-download-manager

我正在尝试将文件下载到目录,该目录可能因用户选择的目录而异。我将当前目录存储在文件对象中,现在尝试下载该文件。文件下载,但不下载指定的目录。那么,我该怎么做才能将文件放在所选目录中。

// Getting path to store the file   
String path = root.getAbsolutePath();   
path += curr.getName();   
request.setDestinationInExternalPublicDir(path, new File(url).getName());    
// get download service and enqueue file   
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);     
manager.enqueue(request);   

名为url的String,传递给File构造函数,包含一个URL。只需使用它来检索该文件的名称。

更新:  我刚刚找到了这个文件。它在手机里不是SD卡。它位于此文件夹中,storage \ emulated \ 00。不知道为什么?另外,我得到的绝对路径是storage \ emulated \ 0。

3 个答案:

答案 0 :(得分:1)

因此,我发现返回的路径始终是storage\emulated\0,用于呼叫getExternalStorageDirectory().getPath())到环境。这是我用来获取初始目录的内容。因此,例如,如果我浏览文件夹到“下载”文件夹,则路径为storage\emulated\0\Download。当我下载文件而不是去实际的下载文件夹时,它会转到或创建存储文件夹中模拟文件夹中的下载文件夹。为了解决这个问题,我在路径中找到了零的索引,添加了1,并使用它得到了子串。之后它起作用了。另外,我必须在另一种浏览目录的方法中执行此操作。作为参数,我传入文件,然后在方法中我得到子字符串。在我用来下载文件的方法中,无论如何,我都会获得storage\emulated\0。不知道为什么会这样做。如果有人能解释这一点,将不胜感激。

答案 1 :(得分:0)

root.getAbsolutePath()是否返回末尾带有路径分隔符的字符串?

如果没有,那么您可能会执行类似bin/usr/var/appfilename.ext而不是bin/usr/var/app/filename.ext的操作,因为您将其直接连接到文件名。

答案 2 :(得分:0)

我在Android 7上仍然遇到此问题。在我的情况下,在重启设备之前,该文件不会显示。这是一个已知问题:https://issuetracker.google.com/issues/36956498

来源:https://stackoverflow.com/a/20413888/2552811