0

ユーザーが指定した場所に〜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)
4

1 に答える 1

0

このエラー メッセージはDownloadManager、現在、 が 2147483647 ( Integer.MAX_VALUE) バイト以下のファイルに限定されていることを示しています。

これについては既にバグ レポートが提出されていますが、現時点では Google からの回答はありません。

それまでの間、その約 3 GB のファイルを 2 つの小さなファイルに分割するよう手配していただけないでしょうか。そうでない場合は、自分でダウンロードする必要があります。

于 2013-07-19T12:31:22.717 に答える