Android のDownloadManagerを使用してファイルを外部ファイル ストレージ (SD カード) のフォルダーにダウンロードするアプリがあります。これは通常は正常に機能しますが、DownloadManager がファイルのダウンロードを終了したときにファイルを破棄する原因がいくつかあります。ソース ファイルの良い例は次のとおりです。
http://traffic.libsyn.com/hdtvpodcast/HDTV-2012-06-01.mp3
問題は libsyn.com からのファイルだけにあるように見えますが、私は確信が持てません。DownloadManager がファイルの保存を処理する方法を変更する方法を探しましたが、クラスにオプションが見つかりません。
これは、ダウンロード用の URL をエンキューする場所です。
request = new Request(Uri.parse(currUrl));
external = Uri.fromFile(externalFile);
request.setDestinationUri(external);
request.setVisibleInDownloadsUi(false);
request.setNotificationVisibility(
DownloadManager.Request.VISIBILITY_HIDDEN);
currDownloadId = dm.enqueue(request);
ファイルの場所は、これを使用して作成されます。
Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + "Podcatcher" + File.separator + "Feeds" + File.separator +
[int] + File.separator + [int] + [string extension];
DownloadManager から DownloadManager.COLUMN_LOCAL_FILENAME 列をクエリすると、次のようになります。
/mnt/sdcard/Podcatcher/Feeds/19/225.mp3
ほとんどのファイルは正常で、ダウンロード後も保持されますが、この場合はそうではありません。ダウンロード後に DownloadManager に強制的にファイルを残す方法についてのアイデアはありますか?
編集: ブラウザからこのファイルをダウンロードするときにスタンドアロンのダウンロード マネージャーを使用すると、ダウンロードの最後に失敗したと報告されることを忘れていました。おそらく私の唯一の解決策は、DownloadManager を使用せずに最初からダウンロードすることですか?