728x90
MANAGE_EXTERNAL_STORAGE 없이도 .txt 파일 읽기 가능해졌다. 가능해졌다 라기보단 수 많은 리서치 및 AI 프롬프트 엔지니어링을 통해 결론을 찾았다. (리서치한 결과 : 해결 방법 없음)
해결 방법 :
app/src/main/kotlin/com/example/talk_analysis_for_kakao/MainActivity.kt 파일에서 Storage Access Framework(SAF)을 이용하여, 해결하였다
구체적인(?) 해결 방법 :
- SDK 33 부터 특정 디렉토리 및 파일을 읽을려면 SAF을 이용해야함
- SAF을 이용하여, Documents/KakaoTalk 디렉토리를 읽을 수 있게 권한을 받아야함
- 처음에는 디렉토리가 아닌 파일 1개(내보내기한 .txt 파일 1개)씩 파일을 읽고, App 내부저장소에 정보를 저장하게 함.
- 이러면 사용자 입장에서 매번 새로운 파일을 SAF 에서 디렉토리 왔다갔다 하면서 선택해야함( 개발자인 내가 직접 해보니, 개귀찮음;;)
- 파일을 직접 선택하는 방식 대신 Documents/KakaoTalk 디렉토리를 선택하면, 하위 디렉토리 중에서 .txt파일을 찾고, 내부 저장소에 정보를 저장하게 수정함.
현재 manifest 파일
사실 maxSdkVersion="33"은 의미가 없다. 적용 안됨;;
현재 어플의 권한 없음
- 파일 추가 버튼을 클릭
- 사용자가 ../KaKaoTalk 디렉토리를 선택해줘야 함( 이 폴더를 사용)
보안정책상 디렉토리를 허용받아야 한다.
허용을 받으면 파일 1개씩 추가하지 않아도 재귀함수를 통해 하위 디렉토리를 이동하면서 .txt 파일을 찾는다.
코드의 일부분(MainActivity.kt)
솔직히 코드를 직접 짜진 못했다.
생성형 AI 만세!
+ 실제 AI 답변
프롬프트 엔지니어링으로 다양하게 코드를 실험을 했다.
코틀린 언어를 몰라서 구체적인 함수는 모르지만, 코드 흐름을 보니 반복 + 재귀를 통해 파일을 읽고, Flutter로 채널을 이용하여 정보를 제공해주고 있다.
일단, MANAGE_ 권한 없이 파일을 불러오는데 성공했지만, 플레이스토어에 배포가 될진 모르겠다.
+ FilePicker, OpenFile 등 모든 플러그인 실패함 ( 결론적으로는 MANAGE_ 권한을 필요로 했음 )
728x90