미니 Scoped Storage 세션 정리
- Score_고동빈
- 조회 수 738
- 2019.05.09. 06:33
오늘 발표한 정책이 Q 정식 릴리즈때 채택될 최종 정책이라고 합니다.
P OS까지:
- 내부 스토리지: 앱 전용, 권한 요구 X
- 외부 스토리지: READ/WRITE_EXTERNAL_STORAGE 권한이 부여되면 자유로이 접근 가능
Q부터:
- 내부 스토리지: 종전과 동일
- MediaStorage에 (내가 관여한 파일에 한해) 권한 없이 읽거나 쓸 수 있음
- 다른 앱이 관여한 파일을 읽거나 쓰려면 권한이 필요
- MediaStorage 밖의 파일에 접근하려면 File Picker를 통해서만 가능
MediaStorage에 속하는 파일들:
- Audio, Video, Images, Downloads
MediaStorage에 저장해서는 안되는 파일들:
- 내 앱에서만 사용될 미디어들(앨범 아트, 메신저 스티커 등)
Downloads 폴더:
- Q부터 MediaStore에 추가
- 타 앱의 파일에 접근하려면 ACTION_OPEN_DOCUMENT 를 통해 유저가 접근할 파일을 선택하게끔 해야 함
저장 디렉토리:
- 기본적으로 해당 파일에 맞는 폴더(음악이면 Audio, 사진이면 Pictures)에 저장
- 해당 폴더 안에서의 Subdirectory나 Filename은 자유로이 설정 가능
- 파일 종류에 맞지 않는 폴더에 저장은 불가(사진을 Audio에 저장한다던지)
- SD카드, USB 드라이브 등에도 저장 가능
사진 메타데이타:
- 사진의 GeoLocation에 접근하려면 ACCESS_MEDIA_LOCATION 권한 필요
- 다른 메타데이타는 종전과 같이 자유로이 접근 가능
Scoped Mode:
- TargetSdk를 Q로 두면 Scoped Storage 모드 적용
- 이 경우, 종전의 파일 접근 방식은 사용 불가
- 종전의 파일 접근 방식으로 접근을 시도하면 FileNotFoundException이나 EPERM 에러를 띄움
- TargetSdk를 Q로 두면서 종전과 같은 파일 접근 방식을 원하면 AndroidManifest.xml에 <application android:requestLegacyExternalStorage="true" /> 를 추가해야 함
- 이 flag는 자기 앱이 Scoped Mode로 전환하는데 시간이 좀 필요한 개발자들을 위한 것, 추후에 제거될 예정
디렉토리 부분이 좀 더 불편해졌네요.
무슨 워크맨도 아니고...