Android 当目标文件路径包含空间时,DownloadManager的行为异常

Android 当目标文件路径包含空间时,DownloadManager的行为异常,android,pdf,Android,Pdf,我的应用程序使用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.n

我的应用程序使用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);
在许多设备上(如nexus 4),下载管理器会按预期将下载的文件保存到
Class 10/jess301.pdf

但在某些设备上(例如Micromax A110:version 4.0.4),下载的文件会保存到不同的loaction-
类%2010/jess301.pdf
。在这些设备上,文件路径中的空格字符替换为
%20

当我在带有API 15的模拟器中运行代码时,它工作正常

所有报告此问题的设备都运行从3.2到4.1的Android版本。但是代码在相应的模拟器上正常工作

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

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


讨论与StreamResult相关的同一问题。

您不能从目标文件夹中删除空间吗?很遗憾,不能。它必须包含文件路径中的空间。实际上,实际的文件夹层次结构比我在这里展示的更深,包含三个或更多的空格