DownloadManager se comporta extrañamente cuando la ruta del archivo de destino contiene espacio

Mi aplicación descarga un archivo pdf con DownloadManager y lo guarda en una carpeta del almacenamiento externo.

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); 

En muchos dispositivos (por ejemplo, nexus 4), el gestor de descargas guarda el archivo descargado en Class 10/jess301.pdf como se esperaba.

Sin embargo, en algunos dispositivos (por ejemplo, Micromax A110: versión 4.0.4) el archivo descargado se guarda en una loaction diferente – Class%2010/jess301.pdf . En estos dispositivos, el carácter de espacio en la ruta del archivo se sustituye por %20 .

Cuando ejecuto el código en un emulador con API 15, funciona correctamente.

Todos los dispositivos que informan sobre este problema ejecutan versiones de Android de 3.2 a 4.1. Pero el código funciona correctamente en los emuladores correspondientes.

¿Cómo puedo hacer que esto funcione correctamente en todos los dispositivos?

Mi solución actual es mover el archivo desde la ubicación incorrecta a la ubicación correcta.

Este enlace discute el mismo problema asociado con StreamResult.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.