2016-02-26 6 views
2

У меня возникла странная проблема с DownloadManager, загрузка прошла успешно, но файл не был сохранен.DownloadManager download завершен, но файл не сохранен

Так что это мой код:

try { 
    DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); 
    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); 
    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE); 
    request.setAllowedOverRoaming(false); 
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN); 
    request.setDestinationInExternalFilesDir(context, /temp/, "test.mp4"); 
    final long downloadId = manager.enqueue(request); 
    boolean downloading = true; 
    while (downloading) { 
     DownloadManager.Query query = new DownloadManager.Query(); 
     query.setFilterById(downloadId); 
     Cursor cursor = manager.query(query); 
     cursor.moveToFirst(); 
     int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); 
     int bytesDownloaded = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)); 
     int bytesTotal = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); 
     if(status==DownloadManager.STATUS_SUCCESSFUL){ 
      Log.i("Progress", "success"); 
      downloading = false; 
     } 
     final int progress = (int) ((bytesDownloaded * 100l)/bytesTotal); 
     cursor.close(); 
     subscriber.onNext(progress); 
    } 
    subscriber.onCompleted(); 
}catch (Exception e){ 
    subscriber.onError(e); 
} 

Я включил WRITE_EXTERNAL_STORAGE на мой манифест тоже. Я попытался сменить каталог на Environment.DIRECTORY_DOWNLOADS, но файл по-прежнему не сохраняется в каталоге загрузки. Я попытался найти его на /Android/data/<my package>/, и загруженный файл там тоже не был. Итак, что случилось с моим кодом?

Дополнительно: в логе показывает, что загрузка выполнена.

enter image description here

+0

Вы указали путь к папке '/ temp /' во внешнем хранилище. Вы проверили там? – Rohit5k2

+0

@ Rohit5k2 я сделал, не там тоже ... –

+0

Проверьте это http://www.gadgetsaint.com/android/download-manager/#.WSK0Yut96Hs – ASP

ответ

0

я имел эту проблему тоже, но она решена, когда я изменил

request.setDestinationInExternalFilesDir(context, Environment.DIRECTORY_DOWNLOADS, videoName+".mp4"); 

в

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS.toString(), videoName+".mp4"); 

теперь сохраняет в "Скачать" папку.