코틀린을 조금씩 배우고 있습니다. 코틀린보다 자바가 아직은 더 편하지만 익숙해지면 구현 속도가 빨라질 것 같아서 배우고 있습니다. 간단히 Android의 External stroage 안에 epub 파일을 찾는 코드를 구현하려고 하는데 간단한 코드가 있어서 정리해보았습니다.
코드를 보면 아시겠지만 File("path").walk().forEach로 recursive하게 모든 file을 탐색합니다. Filtering 조건을 걸어 원하는 파일을 찾을 수 있습니다.
(외부 저장소에 접근하기 위해 READ_EXTERNAL_STORAGE 권한은 미리 요청해야 합니다.)
코드
private val EXTERNAL_STORAGE_PATH = Environment.getExternalStorageDirectory().toString()
fun findBooks() {
doAsync {
Log.d(TAG, "finding books: " + EXTERNAL_STORAGE_PATH)
val books = ArrayList<String>()
File(EXTERNAL_STORAGE_PATH).walk().forEach {
if (it.extension.equals("epub")) {
Log.d(TAG, it.absolutePath)
books.add(it.absolutePath)
}
}
}
}로그
05-22 17:12:34.476 23636 24057 D BookFinder: finding books: /storage/emulated/0
05-22 17:12:35.756 23636 24057 D BookFinder: /storage/emulated/0/Books/MoonReader/Alice_ko.epub
05-22 17:12:35.757 23636 24057 D BookFinder: /storage/emulated/0/Books/data.fbreader.org/recommended/en/books/hpmor.epub
05-22 17:12:35.765 23636 24057 D BookFinder: /storage/emulated/0/Mantano/.metadata/storage/emulated/0/Books/MoonReader/Alice_ko.epub
05-22 17:12:35.771 23636 24057 D BookFinder: /storage/emulated/0/folioreader/adventures/adventures.epub
05-22 17:12:35.771 23636 24057 D BookFinder: /storage/emulated/0/folioreader/TheSilverChair/TheSilverChair.epubLoading script...
Related Posts
- Android 14 - 사진/동영상 파일, 일부 접근 권한 소개
- Android - adb push, pull로 파일 복사, 다운로드
- Android 14 - 암시적 인텐트 변경사항 및 문제 해결
- Jetpack Compose - Row와 Column
- Android 13, AOSP 오픈소스 다운로드 및 빌드
- Android 13 - 세분화된 미디어 파일 권한
- Android 13에서 Notification 권한 요청, 알림 띄우기
- Android 13에서 'Access blocked: ComponentInfo' 에러 해결
- 에러 해결: android gradle plugin requires java 11 to run. you are currently using java 1.8.
- 안드로이드 - 코루틴과 Retrofit으로 비동기 통신 예제
- 안드로이드 - 코루틴으로 URL 이미지 불러오기
- Android - 진동, Vibrator, VibrationEffect 예제
- Some problems were found with the configuration of task 에러 수정
- Query method parameters should either be a type that can be converted into a database column or a List
- 우분투에서 Android 12 오픈소스 다운로드 및 빌드
- Android - ViewModel을 생성하는 방법
- Android - Transformations.map(), switchMap() 차이점
- Android - Transformations.distinctUntilChanged() 소개
- Android - TabLayout 구현 방법 (+ ViewPager2)
- Android - 휴대폰 전화번호 가져오는 방법
- Android 12 - Splash Screens 알아보기
- Android 12 - Incremental Install (Play as you Download) 소개
- Android - adb 명령어로 bugreport 로그 파일 추출
- Android - adb 명령어로 App 데이터 삭제
- Android - adb 명령어로 앱 비활성화, 활성화
- Android - adb 명령어로 특정 패키지의 PID 찾기
- Android - adb 명령어로 퍼미션 Grant 또는 Revoke
- Android - adb 명령어로 apk 설치, 삭제
- Android - adb 명령어로 특정 패키지의 프로세스 종료
- Android - adb 명령어로 screen capture 저장
- Android - adb 명령어로 System 앱 삭제, 설치
- Android - adb 명령어로 settings value 확인, 변경
- Android 12 - IntentFilter의 exported 명시적 선언
- Android - adb 명령어로 공장초기화(Factory reset)
- Android - adb logcat 명령어로 로그 출력