4

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 を使用せずに最初からダウンロードすることですか?

4

1 に答える 1

1

コードに従ってください - 私のために働いた:

request.setMimeType(application/octet-stream);
于 2012-11-27T09:07:23.550 に答える