2012-10-19 11 views
10

DownloadManagerを使用してAndroidデバイスにファイルをダウンロードしています。ファイルをカスタムディレクトリにダウンロードします

downloadRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "file.jpg"); 

これを使用して、DCIM、ダウンロード、Picuturesフォルダなどにダウンロードすることができます。しかし、私はダウンロードするフォルダの制限を選択することしかできません。私が使用して私のSDカードのルートにダウンロードしたい/ SDカード/

私が試した:

downloadRequest.setDestinationUri(Uri.fromFile(new File("/sdcard/file.jpg"))); 

しかし、これは次の例外レンダリング:

はIllegalStateException:先のアンドロイド無効な組み合わせ:4パス:/sdcard/file.jpg

どうすればいいですか?必要な権限がすべて設定されています。

+0

"file.jpg"なしで試しましたか? – Agata

+0

@AgataSworowska同じ結果... java.lang.IllegalStateException:宛先の組み合わせが無効です:4、パス:/ sdcard sdcardのサブディレクトリを試しても同じエラーが発生します – bvanvelsen

答えて

25

このようにしてください。

downloadRequest.setDestinationInExternalPublicDir("/folderName",file.jpg); 

これにより、外部ストレージルートにフォルダが作成され、そこにfile.jpgが配置されます。 official documentationを1として

request.setDestinationInExternalPublicDir("/APP_NAME/", FileNameGetter.getFileName(DATA..url)); 
+2

setDestinationInExternalPublicDirはSamsungデバイスで動作しますか?私はGalaxy S3を試しましたが、それはしませんでした。 – Leebeedev

2

、あなただけの利用可能Environment.DIRECTORY_*のいずれかの定数を使用して、以下のバリアントのいずれかを使用する必要があります。

myRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "my_sub_folder/my_file.txt"); 

ディレクトリタイプ(すなわち、第1のパラメータ)は、でなく、であり、nullであり、

myRequest.setDestinationInExternalFilesDir(myContext, null, "my_sub_folder/my_file.txt"); 
// or 
// myRequest.setDestinationInExternalFilesDir(myContext, Environment.DIRECTORY_PICTURES, "my_sub_folder/my_picture.jpg"); 

ディレクトリタイプ(つまり、ディレクトリタイプ第2のパラメータ)nullとなる。

いずれの場合でも、の最後のパラメータに(サブ)フォルダを指定することはオプションです。

+0

あなたの例ではFileNameGetterとは何ですか?そのライブラリの一部ですか? – bvanvelsen

+0

@bvanvelsen、URLからファイル名を取得する小さな方法です。 – kaibuki

+1

@kaibukiあなたのアンサーが不完全な場合は、その方法も追加してください。 –

1

を使用して、それを修正

関連する問題