1

, 나는 모든 파일 시스템 (예. /sdcard, /storage/emulated/0, /storage/sdcard0, /mnt/sdcard, ...)을 통해 쓸 수있는 권리를 가지고 기대 WRITE_EXTERNAL_STORAGE 가능한 대상 폴더

그러나 때문에 다른 내부 FS의

구조, 난 정말 대상 장치에 폴더를 허용 말할 수 없습니다.

현재 다운로드 폴더를 얻으려면 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)을 사용합니다. 그러나 이것은 내 생각에 내가 사용할 수있는 유일한 폴더가 아닙니다.

그래서 두 가지 질문은 다음과 같습니다 나는 그런 권한이 WIH 쓸 수있는 폴더 무엇인지 찾을 수있는 방법은

  1. 있습니까?
  2. DownloadManager를 사용할 때 첫 번째 질문과 마찬가지로 가능한 대상 폴더가 있습니까?
+1

['getExternalFilesDir()'] (http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir (java.lang.String)) – devnull

+0

당신은 다양한 경로에 대해 걱정할 필요가 없습니다. (/ sdcard,/storage/emulated/0,/storage/sdcard0,/mnt/sdcard)를 언급했다. 일반적으로 그들은 모두 같은 장소를 가리 킵니다. – ozbek

답변

2

외부 저장소 디렉토리를 사용하려면 Environment.getExternalStorageDirectory()을 사용하십시오.

Android 외장 스토리지 디렉토리가 제공됩니다. 이 디렉토리는 사용자가 컴퓨터에 마운트했거나 장치에서 제거했거나 다른 문제가 발생한 경우 현재 액세스 할 수 없습니다. getExternalStorageState()으로 현재 상태를 확인할 수 있습니다.

참고 : 여기에 '외부'라는 단어를 혼동하지 마십시오. 이 디렉터리 은 미디어/공유 저장소로 생각하는 것이 좋습니다. 은 상대적으로 많은 양의 데이터를 저장할 수있는 파일 시스템이며 모든 응용 프로그램에 대해 전체에서 공유됩니다 (사용 권한을 적용하지 않음). 일반적으로 이것은 SD 카드이지만 보호 된 내부 저장소와 다른 장치 에 내장 저장소로 구현 될 수도 있으며 컴퓨터에 파일 시스템으로 장착 된 일 수 있습니다.

+0

이것은 하나의 디렉토리 만 반환합니다. 사용이 허가 된 유일한 디렉토리입니까? –

+0

이것은 루트 디렉토리입니다. 이 디렉토리 또는 하위 디렉토리 내의 모든 내용을 읽고 쓸 수 있습니다. –

+0

나는 내 질문에 대해 언급했는데, 예를 들어 삼성 Galaxy Nexus에는 많은 마운트 포인트가 있으며 어떤면에서는 다른 디렉토리에 읽고 쓸 수 있습니다. –

0

안드로이드의 경우 외장형 스토리지는 getExternalStorageDirectory()을 통해 반환되므로 외장형 스토리지는 기본적으로 하나만 사용해야합니다.

하지만 공용 마운트 지점은 일반적으로 앱이 실행중인 사용자 프로세스에 대해 rw 권한을 가지고 있으므로 사용자가 쓸 수 있습니다. 루트 권한을 얻으면 어디서나 쓸 수 있습니다.