API 29 이상에서는 외부 저장소 접근을 하려고 하면 filenotfoundexception open failed eacces (permission denied) 에러가 발생한다.
이는 API 29 이상에서 부터는 외부 저장소에 접근하기 위해 범위 지정 저장소를 사용하기 때문에 발생하는 문제인데 다음과 같이 범위 지정 저장소 사용을 일시적으로 해제 하여 접근 가능하다.
※ 타겟 SDK 레벨에 상관없이 모든 앱의 내년도 주요 플랫폼 출시에는 범위 지정 저장소가 요구됩니다. 그러므로 앱이 범위 지정 저장소를 잘 사용하는지 미리 확인하는 것이 좋습니다
이는 파일의 위치에 접근하지 못하여 발생하는 문제로 AndroidManifest.xm 파일을 다음과 같이 수정하면 쉽게 해결 가능하다.
manifest에 다음과 같이 파일의 위치에 접근 권한을 추가한다.
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
범위 지정 저장소를 일시적으로 선택 해제할 수 있다. (API 29 이상에서는 디폴트 값이 fasle)
<application
android:requestLegacyExternalStorage="true" >
참고
'Programming > Solution' 카테고리의 다른 글
[SQL] datetime에서 time 기준으로 검색: MySQL (0) | 2020.12.24 |
---|---|
[PHP] isset과 empty의 차이: Database (0) | 2020.12.09 |
[Android] 핸드폰 전화번호 가져오기: getLine1Number (0) | 2020.11.04 |
[Bitbucket] fatal: Could not read from remote repository: Mac (0) | 2020.11.02 |
[Github] 깃허브 README.md나 위키에 이미지 추가하기: 이슈 (0) | 2020.10.09 |