2016-10-31 6 views
12

Possible duplicateAndroid DownloadManager.ERROR_FILE_ERROR

jestem pobieranie dużych plików zip za pomocą Android DownloadManager. Mam listview, który pokazuje listę wszystkich plików zip i użytkownik może dotknąć element, aby rozpocząć pobieranie. Jednocześnie można pobrać tylko jeden produkt. Kiedy nowy element listy zaczyna się pobierać podczas gdy inne pobieranie jest w toku, usuwam poprzedni identyfikator pobierania z kolejki. Wszystko działa dobrze. Ale czasami dostaję ERROR_FILE_ERROR na urządzeniu LG g2 OS 5.0.2. Oto kod:

Uri uri = Uri.parse(path); 
DownloadManager.Request request = new DownloadManager.Request(uri); 
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE); 
request.setAllowedOverRoaming(false); 
request.setVisibleInDownloadsUi(false); 

String localStorageBasePath = FileUtils.zipDirectory(context).getAbsolutePath() + File.separator + fileName; 
Uri localStorageBasePathUri = Uri.fromFile(new File(localStorageBasePath)); 
request.setDestinationUri(localStorageBasePathUri); 
Long downloadId = downloadManager.enqueue(request); 

To działa poprawnie na innych urządzeniach, w tym Nexus 5, Samsung S3 UWAGA2 Huawei itp Kiedy zacznę pobieranie pliku to natychmiast zatrzymuje/nie powiodła się z powodu DownloadManager.ERROR_FILE_ERROR. Próbowałem usunąć/wyczyścić zewnętrzny katalog pamięci masowej, upewniając się, że nie jest to błąd ERROR_INSUFFICIENT_SPACE itp., Ale nie zadziałał. Jakaś pomoc?

Odpowiedz

2

To może być trochę bardziej kuloodporne:

public void file_download(String path, String filename) 
{ 
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).mkdirs(); 

    Uri uri = Uri.parse(path); 
    DownloadManager.Request request = new DownloadManager.Request(uri); 
    request.setDescription(""); 
    request.setTitle(""); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
    { 
     request.allowScanningByMediaScanner(); 
     request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
    } 
    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE); 
    request.setAllowedOverRoaming(false); 
    request.setVisibleInDownloadsUi(false); 
    request.setDestinationInExternalFilesDir(context, DIRECTORY_DOWNLOADS, fileName); 

    //String localStorageBasePath = FileUtils.zipDirectory(context).getAbsolutePath() + File.separator + fileName; 
    //Uri localStorageBasePathUri = Uri.fromFile(new File(localStorageBasePath)); 
    //request.setDestinationUri(localStorageBasePathUri); 
    DownloadManager downloadManager = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE); 
    Long downloadId = downloadManager.enqueue(request); 
} 
Powiązane problemy