2016-12-29 4 views
0

Я пытаюсь загрузить файл с сервера с помощью DownloadManager, но он не загружается и скачает «Загрузка не увенчалась успехом», я прочитал, что есть проблема с Download Manager в приведенной ниже ссылке android-chrome-browser-unnecessarily-renames-names-types-of-downloaded-files, поэтому я попытался загрузить файл, добавив RequestHeader в DownloadManagerRequest, используя метод ниже, но ничего не произошло. пожалуйста, найдите приведенную ниже часть кода моего класса Downloader, пожалуйста, предложите мне правильный способ загрузить файл с url с помощью DownloadManager.Загрузите Unsuccessful при использовании DownLoadManager.Request, чтобы загрузить файл с url

URL:

HTTP: // -Хранение. .net/95 - ****/95-3194.pdf AWSAccessKeyId = T9YG9HWQC1LHE5G5VF38 & Истекает = 1483443248 & Подпись = Z% 2BkWzfEI2VawbCx% 2F2Yto1kPcJKA% 3D

Благодаря

 public void download(Uri uri) { 
       if (!isDownloading()) { 
        String fileName=getName(uri); 
        DownloadManager.Request request = new DownloadManager.Request(uri); 
        request.setTitle(fileName); 
        request.setNotificationVisibility(1); 
        request.allowScanningByMediaScanner(); 
        request.addRequestHeader("Content-Type", "application/octet-stream"); 
        request.addRequestHeader("Content-Disposition", "attachment; filename=\""+fileName.split("\\.")[0]+"."+fileName.split("\\.")[1].toUpperCase()+"\""); 
        String cookieContent = getCookieFromAppCookieManager(uri.getHost()); 
        request.addRequestHeader("Cookie", cookieContent); 
        downloadId = downloadManager.enqueue(request); 
        register(); 
       } 
      } 

и ниже блок возвращает имя файла

private String getName(Uri uri) { 
     String name=uri.toString().split("jabord/")[1].split("\\?")[0]; 
     return name; 
    } 

возвращает менеджер appcookie

public String getCookieFromAppCookieManager(String url){ 
     android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance(); 
     if (cookieManager == null) { 
      return null; 
     } 
     String rawCookieHeader = null; 

     // Extract Set-Cookie header value from Android app CookieManager for this URL 
     rawCookieHeader = cookieManager.getCookie(url); 
     if (rawCookieHeader == null) { 
      return null; 
     } 

     return rawCookieHeader; 
    }; 

ответ

1

Удалите заголовки и задайте тип изображения, а затем он будет работать. Например,

public void download(Uri uri) { 
    if (!isDownloading()) { 
     String fileName=getName(uri); 
     DownloadManager.Request request = new DownloadManager.Request(uri); 
     request.setTitle(fileName); 
     request.setNotificationVisibility(1); 
     request.allowScanningByMediaScanner(); 
     request.setMimeType("application/pdf"); 
     Log.e("Extension with ","UpperCase-->"+"\""+fileName.split("\\.")[0]+"."+fileName.split("\\.")[1].toUpperCase()+"\""); 
     downloadId = downloadManager.enqueue(request); 
     register(); 
    } 
}