마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

내장메모리와 외장메모리경로

0 추천
Environment.getExternalStorageDirectory() 

외장메모리를 알수있는 메소드는 상기와 같습니다.

 

실제 DDMS에서 확인하면 sdcard를 꼽으면 /storage/sdcard1 이 생기므로

sdcard1이 외장메모리 인것을 알수있습니다.

내장메모리는 strage/emulated(mnt/sdcard) 이고요..

 

근데 저메소드로 외장메모리 경로를 찍어보면 외장메모리가 아니라 내장메모리로 나옵니다.

 

제가 뭘잘못한건가요 ??? ㅠㅠ

왜 내장메모리 경로가 나오죠 ???

 

now882002 (3,860 포인트) 님이 2014년 11월 14일 질문

2개의 답변

0 추천
외장 메모리는 extSdCard 입니다.

진저 이후 부터 안드로이드에 파티션 관련 내용이 변경되서 그렇습니다.
aucd29 (218,390 포인트) 님이 2014년 11월 14일 답변
http://gogorchg.tistory.com/232

여기보니 답이 나와있네요.

그럼 마운트된 경로 찾아서 파일을 저장하면 된다는건데
왜 권한없다고 뜰까요 ??
권한은 다있는데
0 추천
구글은 외장메모리 하나만 지원하도록 API가 설계 되었습니다.

그래서, 내장과 외장을 동시에 지원하는 모델의 경우 내장메모리 경로가

내장 또는 외장 하나만 지원하는 모델의 경우 지원되는 경로가 나옵니다.

 

현재까지 모든 버전을 아울러서 외장과 내장메모리를 찾는 방법은 없고

mounts 를 검토해서 유추하는 방법과

System.getenv("EXTERNAL_STORAGE");

System.getenv("SECONDARY_STORAGE");

를 이용하는 방법이 있는데....SECONDARY_STORAGE 는 비교적 최신모델들만 지원됩니다.

 

또한 킷캣부터는 내장과 외장을 동시 지원하는 모델의 경우

외장SD카드에 쓰기권한이 막혀있습니다. (특정 폴더 제외)

킷캣발표후 그래서 한동안 후폭풍이 있었죠......저도 한때 휘말려서 거의 죽다가...쿨럭~

(구글에서는 진저이후부터 바꾼 내용이지만 제조사가 임의로 권한을 준거였는데

킷캣부터는 구글 테스트항목에 떡~~~ 하니 있어서 제조사도 어쩔수 없이 지키고 있죠.)
바램 (19,650 포인트) 님이 2014년 11월 14일 답변
...