마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

File로 SDcard를 읽으려는데, 읽을 수 없다고 합니다.

0 추천
String path = Environment.getExternalStorageDirectory().getPath();
File file = new File(path);
Log.d("Test", file.exists()+"");
Log.d("Test", file.isDirectory()+"");
Log.d("Test", file.canRead()+"");

외장하드의 파일을 조회하려고 하는데, Exist와 isDirectory에서는 True가 반환되는 반면 canRead에서는 False가 반환됩니다.

권한 설정 문제인가 싶어서 Manifest에 Read_External_Storage 권한을 추가하는 것과, requestPermissions를 이용하여 권한을 추가하는 부분까지 시도하였으나, 권한이 있다고 표시되도 여전히 Read에 대해서는 False가 반환됩니다...

혹시 어느 부분이 문제인지 알 수 있을까요?

 

익명의 뉴비 (170 포인트) 님이 2020년 12월 17일 질문

1개의 답변

0 추천
 
채택된 답변
1. Environment.getExternalStorageDirectory() 는 sd card 경로를 알려주는 것이 아니고, 내장 storage경로를 알려줍니다.

 

2. target sdk가 Q(29)인 경우 해당 경로는 File(path)로 직접 접근이 불가능합니다.

Context#getExternalFilesDir(String),  Intent#ACTION_OPEN_DOCUMENT 등의 interface를 이용해야 합니다.
디자이너정 (42,810 포인트) 님이 2020년 12월 17일 답변
익명의 뉴비님이 2020년 12월 17일 채택됨
진짜 너무 감사드립니다! 2번 문제가 정말 궁금한 부분이었어요!
검색해도 잘 안나오더라구요 ㅠㅠ 선생님 덕분에 해결할 수 있었습니다! 감사합니다!
...