카테고리 없음

[Flutter] MANAGE_EXTERNAL_STORAGE 없이 파일 읽기 성공~

ThLee 2024. 3. 20. 00:12
728x90

MANAGE_EXTERNAL_STORAGE 없이도 .txt 파일 읽기 가능해졌다. 가능해졌다 라기보단 수 많은 리서치 및 AI 프롬프트 엔지니어링을 통해 결론을 찾았다. (리서치한 결과 : 해결 방법 없음)

 

해결 방법 :

app/src/main/kotlin/com/example/talk_analysis_for_kakao/MainActivity.kt 파일에서 Storage Access Framework(SAF)을 이용하여, 해결하였다

 

 

구체적인(?) 해결 방법 :

 

  1. SDK 33 부터 특정 디렉토리 및 파일을 읽을려면 SAF을 이용해야함
  2. SAF을 이용하여, Documents/KakaoTalk 디렉토리를 읽을 수 있게 권한을 받아야함
  3. 처음에는 디렉토리가 아닌 파일 1개(내보내기한 .txt 파일 1개)씩 파일을 읽고, App 내부저장소에 정보를 저장하게 함.
  4. 이러면 사용자 입장에서 매번 새로운 파일을 SAF 에서 디렉토리 왔다갔다 하면서 선택해야함( 개발자인 내가 직접 해보니, 개귀찮음;;)
  5. 파일을 직접 선택하는 방식 대신 Documents/KakaoTalk 디렉토리를 선택하면, 하위 디렉토리 중에서 .txt파일을 찾고, 내부 저장소에 정보를 저장하게 수정함.

 

현재 manifest 파일 

사실 maxSdkVersion="33"은 의미가 없다. 적용 안됨;;

 

현재 어플의 권한 없음

 

  • 파일 추가 버튼을 클릭

  • 사용자가  ../KaKaoTalk 디렉토리를 선택해줘야 함( 이 폴더를 사용)

보안정책상 디렉토리를 허용받아야 한다. 

 

허용을 받으면 파일 1개씩 추가하지 않아도 재귀함수를 통해 하위 디렉토리를 이동하면서 .txt 파일을 찾는다.

 

 

코드의 일부분(MainActivity.kt)

 

 

솔직히 코드를 직접 짜진 못했다. 

 

생성형 AI 만세!

 

+ 실제 AI 답변

 

프롬프트 엔지니어링으로 다양하게 코드를 실험을 했다. 

코틀린 언어를 몰라서 구체적인 함수는 모르지만, 코드 흐름을 보니 반복 + 재귀를 통해 파일을 읽고, Flutter로 채널을 이용하여 정보를 제공해주고 있다. 

 

일단, MANAGE_ 권한 없이 파일을 불러오는데 성공했지만, 플레이스토어에 배포가 될진 모르겠다. 

 

+ FilePicker, OpenFile 등 모든 플러그인 실패함 ( 결론적으로는 MANAGE_ 권한을 필요로 했음 )

 

 

728x90