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