2013-07-18 1 views
0

~ 3GB 파일을 사용자가 지정한 위치에 다운로드 할 수 있어야하는 응용 프로그램이 있습니다. 현재 아래 코드가 있는데, 작동하는 것으로 보입니다. 즉 다운로드가 다운로드 관리자에서 표시됩니다.DownloadManager를 사용하여 응용 프로그램 내에서 특정 디렉토리에 큰 파일을 다운로드

그러나 다운로드가 완료되면 올바른 위치에 나타나지 않으며 공간이 전혀 사용되지 않습니다.

이 내 현재 코드입니다 :

public void file_download(String uRl) { 
install_txt = AppPreferences.getPrefs().getString(
       "path", 
       Environment.getExternalStorageDirectory().getPath() 
       + "/test.img"); 

      DownloadManager mgr = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE); 

      Uri downloadUri = Uri.parse(uRl); 
      DownloadManager.Request request = new DownloadManager.Request(
        downloadUri); 

      request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI) 
        .setAllowedOverRoaming(false).setTitle("test") 
        .setDescription("Downloading test") 
        .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS , install_txt); 

      mgr.enqueue(request); 
     } 

그래서 제 질문은 정말 왜 위가 잘 작동하지 않습니다입니까? 또는 다운로드 관리자가 그러한 대용량 파일을 다운로드하는 데 어려움이 있습니까? 그 경우는 다운로드가 아래 그 오류 메시지가 DownloadManager 제안했다

07-19 13:19:28.112: W/DownloadManager(19199): Exception for id 8952: Invalid int: "3891000000" 
07-19 13:19:28.112: W/DownloadManager(19199): java.lang.NumberFormatException: Invalid int: "3891000000" 
07-19 13:19:28.112: W/DownloadManager(19199): at java.lang.Integer.invalidInt(Integer.java:138) 
07-19 13:19:28.112: W/DownloadManager(19199): at java.lang.Integer.parse(Integer.java:378) 
07-19 13:19:28.112: W/DownloadManager(19199): at java.lang.Integer.parseInt(Integer.java:366) 
07-19 13:19:28.112: W/DownloadManager(19199): at java.lang.Integer.parseInt(Integer.java:332) 
07-19 13:19:28.112: W/DownloadManager(19199): at com.android.providers.downloads.DownloadThread.handleEndOfStream(DownloadThread.java:516) 
07-19 13:19:28.112: W/DownloadManager(19199): at com.android.providers.downloads.DownloadThread.transferData(DownloadThread.java:314) 
07-19 13:19:28.112: W/DownloadManager(19199): at com.android.providers.downloads.DownloadThread.executeDownload(DownloadThread.java:278) 
07-19 13:19:28.112: W/DownloadManager(19199): at com.android.providers.downloads.DownloadThread.runInternal(DownloadThread.java:193) 
07-19 13:19:28.112: W/DownloadManager(19199): at com.android.providers.downloads.DownloadThread.run(DownloadThread.java:142) 
+0

작은 파일이 제대로 작동합니까? 합리적으로 큰 파일에 문제가있는 것은 확실합니까? –

+0

@KenWolf 예 작은 파일이 제대로 작동하는 것 같습니다. –

+0

감사합니다. 기기에 충분한 공간이 있습니까? –

답변

0

로그 캣에 표시됩니다 마친 후 나는 그런 큰 파일을 안정적으로

를 다운로드하는 데 사용할 수있는 더 나은 방법이있을 경우 는 현재 2147483647 (Integer.MAX_VALUE) 바이트 이하의 파일로 제한됩니다.

a bug report 이미 Google로부터 응답이 없으므로 이미 제출되었습니다.

그동안 ~ 3GB 파일을 두 개의 작은 파일로 분할 할 수 있는지 확인했습니다. 그렇지 않은 경우 직접 다운로드해야 할 수도 있습니다.

+0

감사합니다. 파일을 분할해야합니다. –

관련 문제