2012-10-19 9 views
10

DownloadManager를 사용하여 Android 기기에 파일을 다운로드하고 있습니다.사용자 디렉토리에 파일 다운로드

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

다음을 사용하여 DCIM, 다운로드, Picutures 폴더 등으로 다운로드 할 수 있습니다. 그러나 다운로드 할 수있는 한도의 폴더 만 선택할 수 있습니다. 내가 사용하여 내 SDCARD의 루트에 다운로드 할/SDCARD/

내가 시도 :

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가 위치합니다.

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

디렉토리 유형 (:

+2

setDestinationInExternalPublicDir이 삼성 기기에서 작동합니까? 나는 Galaxy S3를 시도했지만 그렇지 않았습니다. – Leebeedev

2

official documentation 당으로

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

예제에서 FileNameGetter 란 무엇입니까? 그 도서관의 일부인가요? – bvanvelsen

+0

@bvanvelsen, URL에서 파일 이름을 가져 오는 작은 방법. – kaibuki

+1

@kaibuki 그러면 anser가 불완전합니다. 그 방법도 추가하십시오. –

1

를 사용하여 고정 만 가능한 Environment.DIRECTORY_* 상수 중 하나를 사용하여, 다음과 같은 변종 중 하나를 사용한다 즉 첫 번째 매개 변수는 이 아닐 수 있습니다.null 또는

입니다.

디렉토리 유형 (즉, 디렉토리 유형 제 2 파라미터) null 일 수있다.

어떤 경우에도 마지막 매개 변수에 (하위) 폴더를 지정하는 것은 선택 사항입니다.