Scoped Storage
2021. 6. 3. 14:17ㆍAndroid/Contents
- 외부저장소의 보안과 파일 관리의 효율을 위해 기존 형태에서 공용공간이 사진/동영상/음악/다운로드 4개의 분할된 공간으로 제공하며, 개별 앱 공간을 샌드박스 형식으로 타앱에서 접근이 불가하게 만들어 놓음
- 따라서, 공용공간에 앱에서 디렉터리를 생성해 파일을 저장해놓는 형태였다면, 개별 앱공간으로 해당 파일들에 대한 마이그레이션(파일 이동)이 필요함(왜냐하면, 4개의 분할된 공간으로만 제공되기 때문에 접근 통로를 잃어버려 해당 환경의 파일에는 접근이 불가하게 되기 때문에)
- 이미지 - 사진 및 스크린샷을 포함하며, DCIM/ 및 Pictures/ 디렉터리에 저장됩니다. 시스템은 이러한 파일을 MediaStore.Images 테이블에 추가합니다.
- 동영상 - DCIM/, Movies/ 및 Pictures/ 디렉터리에 저장됩니다. 시스템은 이러한 파일을 MediaStore.Video 테이블에 추가합니다.
- 오디오 파일 - Alarms/, Audiobooks/, Music/, Notifications/, Podcasts/ 및 Ringtones/ 디렉터리에 저장된 오디오 파일과 Music/ 또는 Movies/ 디렉터리에 있는 오디오 재생목록이 포함됩니다. 시스템은 이러한 파일을 MediaStore.Audio 테이블에 추가합니다.
- 다운로드한 파일 - Download/ 디렉터리에 저장됩니다. Android 10(API 수준 29) 이상을 실행하는 기기에서는 이러한 파일이 MediaStore.Downloads 테이블에 저장됩니다. Android 9(API 수준 28) 이하에서는 이 테이블을 사용할 수 없습니다.
Environment.getExternalStorageDirectory() 디렉토리 생성 가능 여부(외부 저장소 쓰기 권한 부여된 상태)
- requestLegacyExternalStorage none
targetSDK 28 | targetSDK 29 | targetSDK 30 | |
Pie | Y | Y | Y |
Qos | Y | N | N |
Ros | Y | N | N |
- requestLegacyExternalStorage true
targetSDK 28 | targetSDK 29 | targetSDK 30 | |
Pie | - (requestLegacyExternalStorage 대상 아님) |
Y | Y |
Qos | - (requestLegacyExternalStorage 대상 아님) |
Y | Y |
Ros | - (requestLegacyExternalStorage 대상 아님) |
Y | N |
참고>
Environment.getExternalStorageDirectory() : /sdcard or /storage/emulated/0
Context.getExternalFilesDir(null) : /sdcard/Android/data/[PACKAGE NAME]/files or /storage/emulated/0/Android/data/[PACKAGE NAME]/files
Device File Explorer 위치
'Android > Contents' 카테고리의 다른 글
Docker를 이용한 CICD 구성 (0) | 2023.10.19 |
---|---|
DeepLink(feat.Navigation Dynamic Link 설정) (0) | 2023.07.13 |
Kotlin Style Guide vs. Android Studio Lint & Coding Style (0) | 2022.04.23 |
Content Provider & File Provider (0) | 2021.06.03 |