티스토리 뷰

혹시, 저 같이 생각 하는 사람들이 있을까 해서 이렇게 글을 적습니다.


안드로이드 폰에는 외장 SD card를 지원하는 폰이 있고 지원하지 않는 폰이 있습니다

대표적으로 레퍼런스 폰들은 외장 SD card를 지원하고 있지 않죠.


만약 기능상으로 외장 SD card에 접근을 할 때 어떤 함수를 써야하나~ 하면서 API를 뒤집니다.

그러면 눈에 띄는 한가지 함수가 보이죠!!

Environment.getExternalStorageDirectory()

위 함수명을 보는 순간~~ 오! 할렐루야~~ 안드로이드는 API가 참 잘 되어 있어~ 하면서~

바로 이 함수를 호출합니다. 위 Directory를 출력하게 되면

"/mnt/sdcard" 로 출력이 되죠~^^ 야르~~ 오예~~~ 이게 외장 SD card 경로 구나 하면서

이 경로에 여러가지를 붙여서 파일 입출력을 합니다.


하지만! 손님... 여기서 이러시면 안됩니다.

위 경로는 외장 SD card 경로가 아닌 내장 SD card 경로 입니다.

즉 우리가 넣다 뺏다 할 수 있는~ 요~~물 인 외장 SD card의 경로가 아니라는 겁니다.


안드로이드 폰은 기본적으로 외장 SD card를 지원하지 않기 때문에,

기본 API에는 이에 대한 대응이 되어 있지 않습니다.

결국!!! 조건에 맞춰서 직접 코딩을 해야하는 수 밖에 없지요.!

http://stackoverflow.com/questions/5694933/find-an-external-sd-card-location


혹시 넣었다 뺐다 할수 있는 외장 SD card로 파일 입출력 하시는 분들은~

직접 대응 폰의 마운트된 외장 SD card 경로를 파악하고 그에 맞춰서 코딩을 진행해야겠습니다.

저두... 엄청난 착각을 했네요.


위 내용에 잘못된 내용이나 고쳐야 할 사항이 있으시면 댓글 부탁드립니다.

그럼 오늘도 즐코딩!








'나의 플랫폼 > 안드로이드' 카테고리의 다른 글

[Android] InputFilter  (0) 2013.07.08
notification  (0) 2013.07.04
[Android] 외장 하드 접근의 큰 착각.  (11) 2013.07.03
[Android] 실시간 GPS 사용  (2) 2013.06.14
[ JAVA ] try catch finally 사용 시 문제점.  (1) 2013.04.16
[ Android ] htons  (0) 2013.01.28
댓글
  • 프로필사진 yonoo88 Environment.getExternalStorageDirectory()

    이게 내장sd카드 경로란 말씀인가요??
    제가 이걸로 개발을 해보고 있는데 sdcard에 폴더 생성도 되고 잘 되는거 같습니다.
    astro 로 봣거든요. 그럼 거기가 내장공간이라는 건가요?

    그럼 하드코딩으로 직접 써줘야 하는건가요 /mnt/sdcard 이런식으로요
    2013.07.22 16:47 신고
  • 프로필사진 GsBOB 우선, 제가 테스트해 본 바로는 핸드폰 마다 sdcard의 경로가 다릅니다.

    말씀하신 대로 /mnt/sdcard 는 내장 sd카드 메모리 이기 때문에,
    하드 코딩으로 지정을 한다고 하더라도,
    저 경로로는 외장 sd카드는 검색하지 않습니다.

    즉, 저 같은 경우 블로그에 써놓은 내용 같이
    마운트 된 볼륨 경로를 받아 와서
    체크하는 식으로 진행하였습니다.

    답변이 되었는지요??
    2013.07.23 08:41 신고
  • 프로필사진 yonoo88 제가 아직 초짜라.. 이해가 잘..
    그렇더라면 이름을 왜 getExternalStorage로 지었는지 의문이네요.

    그럼 제조업체마다 저게 외장경로일수도 있다는 건가요? 스택오버플로우 링크를 봤는데 별 다른 해답을 제시하고 있진 않은거 같아서요
    실례지만 예시를 부탁드려도 될까요?

    2013.07.24 14:17 신고
  • 프로필사진 GsBOB 핸드폰의 컨셉을 고려해야합니다.

    내장 SD 카드만 지원하는 핸드폰이 있구요.
    외장 SD 카드까지 지원하는 핸드폰이 있습니다.

    즉, 말씀하신 getExternalStorage는 이렇게 생각하셔도 좋을 듯합니다. 핸드폰에는 SD카드가 없어도 자체적으로 저장시킬 수 있는 메모리가 있죠. 플래시 메모리 같은경우를 들 수 있습니다. 하지만 이것들은 가격이 비싸고 용량도 작기 때문에 SD 카드를 부착 시켜 그 용량을 늘리는 데요. 이 SD 카드는 내부 Storage에 포함 되는 게 아니라 탈 부착 할 수 있는 외부 Storage입니다.

    하지만, 핸드폰 컨셉으로 SD카드를 탈부착 안되게 설정하여 용량을 늘리는 식으로 해서 내부 SD카드라고 부르는 겁니다.

    이건 저의 상식이구요. 이부분도 잘못 됬다고 생각하시면 다시 댓글 부탁드립니다.^^
    2013.07.24 17:27 신고
  • 프로필사진 yonoo88 그럼 결국 폰 마다 다르다는 말씀이신데 이러한 경로를 일일이 지정해주기엔 안드로이드 폰 기종이 너무 많습니다.

    특정폰에서만 개발하면 그 기종을 찾아서 경로를 설정하면 상관없겠지만 그 많은 폰들의 경로를 일일이 찾아서 확인할 여건이 안된다면 그냥

    Environment.getExternalStorageDirectory()

    이걸로 때려박아야 겠네요. 어쨌든 내장이든 외장이든 저장은 될테니까요.

    2013.07.24 17:58 신고
  • 프로필사진 yonoo88 보아하니 갤럭시의 경우 외장을 내장으로 쓰고 있다고 하더라구요. 그래서 외장메모리를 추가하면 내 컴퓨터에 외장 메모리 2개가 뜬다고 하더군요.
    제가 폰이 오래되서 최신 폰에 대한 지식이 부족해서... 제꺼는 외장만 인식해서 내장메모리는 아예 뜨질 않아서 접근할 수가 없더라구요. 접근방법이 있으려나...

    2013.07.24 18:02 신고
  • 프로필사진 GsBOB 제가 이글을 쓴 이유도, 폰 마다 형식이 다르게 때문에
    체크해볼 필요가 있다는 것이죠^^

    좀더 안정적인 프로그램을 만들기 위해서요~~~
    2013.07.26 17:50 신고
  • 프로필사진 hsgfml7 저런식으로 코딩을 했는데 사진이 한장씩만 저장됩니다ㅠㅠ
    계속 저장시키서 한번에 여러장을 보게 하려면 어떻게해야하는지...?ㅠㅠㅠ
    2013.09.14 19:21 신고
  • 프로필사진 GsBOB 기본 갤러리에서 불러 오시는 거면 한장 씩 밖에 되지 않습니다.
    여러 장을 한번에 불러 오시게 하실려면,
    커스텀 하고 갤러리를 하나 만들어야 합니다. ㅠㅠ

    홧팅!
    2013.09.17 13:44 신고
  • 프로필사진 !! 마운트된거 찾아서 파일 쓰려니깐 권한없다고 뜨네요 ㅜㅜ
    아 ... 분명히 권한은 다있는데... ㅠㅠ
    마운트된메모리 경로 찾아서
    파일 생성하려면 File file=new File ("마운트된 외장메모리 경로/"+"파일이름");

    이렇게 하는거아니예요 ???
    권한은 어떤걸줘야하나요 ??
    지금 저는
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    두가지 권한줬는데
    2014.11.14 13:58 신고
  • 프로필사진 신용환 아직도 이 상황이네요.
    이상하게 내장에 저장을 해서 찾아보니, 먼저 고민하던 분이 계셨네요^^
    2018.01.21 10:35 신고
댓글쓰기 폼
공지사항
Total
389,968
Today
955
Yesterday
1,111
«   2018/10   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
글 보관함