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

API레벨별 sd카드 경로 구분하는 방법

0 추천
Intent it=getIntent();	
			String str_name=it.getStringExtra("it_name");		
			File fileRoute = null;
			fileRoute = Environment.getExternalStorageDirectory();

 

 

지금외부 저장소 경로가 저렇게 되어있는데 어느 기기에서는 저장이 안된다고 합니다.

 

찾아보았떠니

 

API Level 7  이하는 

getExternalStorageDirectory()

 

API Level 8 이상은

getExternalFilesDir()

 

이렇게 쓴다고 하더라구요

 

그래서 레벨 구분하는 코드를 찾아보니

 

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    // Android OS Version 4.1 이상에서 동작할 내용
} else {
    // Android OS Version 4.1 미만의 OS에서 동작할 내용
}
 
이렇게 하면 된다고 해서 JELLY_BEAN 부분을 API 레벨인 FROYO로 바꾼다음
 
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
    fileRoute = Environment.getExternalStorageDirectory();
} else {
    fileRoute = Environment.getExternalFilesDir();
}
 
이렇게 경로 구분을 해주려고 했습니다.
 
그런데
 else {
    fileRoute = Environment.getExternalFilesDir();
}
저 부분에서 에러가 나거든요 에러메세지는

The method getExternalFilesDir() is undefined for the type Environment

 

이렇게 나옵니다.

 

Environment 에서는 정의되는 않는 메소드라는거 같은데 그럼 어떻게 해줘야 하는거죠?

 

혹시 

 

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
 
 
이거때문에 그런가요? 지금 설정이 이렇습니다.
브루스웨인 (8,580 포인트) 님이 2014년 1월 20일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...