当目标文件路径包含空格时,DownloadManager表现异常

dnp*_*dnp 5 pdf android

我的应用程序使用DownloadManager下载pdf文件,并将其保存到外部存储中的文件夹中。

 File folder = new File(Environment.getExternalStorageDirectory(), "Class 10");
    File chapterFile = new File(folder, "jess301.pdf");
    request = new DownloadManager.Request(Uri.parse("http://www.ncert.nic.in/NCERTS/l/jess301.pdf"))
                    .setTitle("Book Name")
                    .setDescription("Chapter Name")
                    .setDestinationUri(Uri.fromFile(chapterFile))
                    .setVisibleInDownloadsUi(false);
            downloadID = downloadManager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

在许多设备(例如nexus 4)上,下载管理器会将下载的文件保存到Class 10/jess301.pdf预期的位置。

但是在某些设备(例如Micromax A110:4.0.4版)上,下载的文件保存到其他位置- Class%2010/jess301.pdf。在这些设备上,文件路径中的空格字符替换为%20

当我在具有API 15的仿真器中运行代码时,它可以正常工作。

报告此问题的所有设备都运行Android版本3.2至4.1。但是代码可以在相应的仿真器上正常工作。

如何在所有设备上正常工作?

我当前的解决方法是将文件从错误的位置移到正确的位置。

此链接讨论与StreamResult相关的相同问题。