Development record of developer who study hard everyday.

, , , , , , , , ,

안드로이드 10 이전 legacy storage 개념 총 정리

 


안드로이드 10이전 Legacy Storage 활용

내부저장소 사용하기

안드로이드 10 이전 LegacyStorage를 사용할 때 내부저장소에 접근할 때는 권한이 필요 없습니다.

그리고 앞의 글에서 이야기했듯이 안드로이드 10 이전과 이후, 내부저장소의 개념은 달라진게 없습니다.

따라서 해왔던 것처럼 

getFilesDir() : 내부저장소의 앱 개별 공간 경로

getCacheDir() : 내부저장소의 임시 캐시파일 저장소 경로

위 2개의 함수를 사용하여 앱의 내부저장소에 접근하면 됩니다.


외부저장소 공유공간 사용하기 

외부저장소의 공유공간에 접근해봅시다.

Legacy Storage에서는 외부저장소에 접근하기 위해서 권한이 필요합니다.


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

위와 같이 manifest.xml 파일에 권한을 선언해줍니다.

참고로 Legacy Storage에서는 WRITE_EXTERNAL_STORAGE 권한만 있으면 외부저장소에 접근 가능합니다.

한 마디로 보안이 취약하다는 뜻입니다.

그 다음 외부저장소가 사용가능한지 getExternalStorageState() 함수를 호출하여 확인합니다.

public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}

이제 외부저장소 공유공간 경로를 가져오겠습니다.

getExternalStorageDirectory() 또는 getExternalStoragePublicDirectory(String type)  함수를 사용하면 됩니다.

getExternalStorageDirectory() 는 외부저장소 SD카드(빌트인)의 최상위 경로를 반환합니다.

getExternalStoragePublicDirectory(String type) 는 외부저장소의 공유디렉터리 경로를 반환합니다.

아래는 예시입니다.

//폴더 저장 경로
public static final String STRSAVEPATH = Environment.getExternalStorageDirectory() + "/MyDirectory/";
public static final String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();

getExternalStoragePublicDirectory() 함수의 매개변수로 던져줄 String타입의 type 변수의 종류는 아래와 같습니다. null을 넘겨주는 것도 가능합니다.

안드로이드 Legacy Strorage

외부저장소 앱 개별공간 사용하기

외부저장소의 앱 개별공간을 사용하고 싶을 때는 getExternalStorageDirectory() 와 getExternalStoragePublicDirectory(String type) 함수대신 getExternalFilesDir(String type) 함수를 사용하면 됩니다.

나머지는 똑같습니다.

이 경우 앱 개별공간이기 때문에 앱을 삭제하면 외부저장소의 앱 개별공간에 있던 파일들도 사라지게 됩니다.


Share:

댓글 없음:

댓글 쓰기