기존 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") }
Scoped Storage stackoverflow 이슈
다음의 코드를 Manifest.xml에 넣어주면 레거시 코드로 스토리지 접근이 가능하다.
android:requestLegacyExternalStorage="true"
위치는 application tag이다.