android:scoped_storage_사용하기
scoped storage 사용하기
1. 문제점
기존 Android 10(Q, API Level 29)까지는 WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE 권한이 있다면 자유롭게 미디어에 대한 읽기/쓰기 처리가 가능했다.
즉, AndroidManifest.xml에
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
와 같이 권한을 허락해 주면,
다음과 같은 파일 읽기 함수를 마음대로 쓸 수 있었다.
val dir = File(Environment.getExternalStorageDirectory().toString() + "//Documents") val files = dir.listFiles() if (files == null) { println("There are no files!! ") }else{ val numberOfFiles = files.size println("The are $numberOfFiles files in this directory!") println("The directory is $dir") }
2. 해결법
가. 레거시 코드 허용해 주기
Scoped Storage stackoverflow 이슈
다음의 코드를 Manifest.xml에 넣어주면 레거시 코드로 스토리지 접근이 가능하다.
android:requestLegacyExternalStorage="true"
위치는 application tag이다.
나. 미디어 스토어 이용하기
android/scoped_storage_사용하기.txt · 마지막으로 수정됨: 2023/08/04 14:15 저자 이거니맨
로그인