使用DownloadManager从应用程序内将大文件下载到特定目录



我有一个应用程序,需要能够将~3GB的文件下载到用户指定的位置,我目前有以下代码,它似乎可以工作。即下载发生时,它显示在下载管理器等中

然而,一旦下载完成,它就无法出现在正确的位置,而且空间根本没有被占用。

这是我当前的代码:

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

所以我真正的问题是,为什么上面的不起作用?还是只是下载管理器很难下载这么大的文件?如果是这样的话,我可以用一种更好的方法来可靠地下载这么大的文件

下载完成后,以下内容显示在logcat 中

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)

该错误消息表明DownloadManager目前仅限于2147483647(Integer.MAX_VALUE)字节或更小的文件。

已经为此提交了一份错误报告,谷歌目前没有回应。

在此期间,我想看看你是否可以安排将大约3GB的文件拆分为两个较小的文件。如果没有,您可能需要自己下载。

相关内容

  • 没有找到相关文章

最新更新