본문 바로가기

Dev/안드로이드

[안드로이드 짤막공부] 23.08.21

 1. 요즘 강의를 새로 듣고 있어서 혼자 고민할 부분이 적다보니 딱히 블로그에 쓸만한 오류가 발생하지 않았다. 그러던 차에 오랜만에 오류가 생겼다.

ActivityCompat.requestPermissions(
    this,
    arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE),
    REQUEST_READ_EXTERNAL_STORAGE
)

외부 저장소 읽기 권한 요청을 발생시키는 위 코드가 기대한대로 동작하지 않았다. 리스너를 달아둔 버튼을 아무리 클릭해도 묵묵부답.

로그를 찍어 확인해봤지만 분명히 클릭 리스너와 메소드 진입은 정상적으로 일어나고 있었다. 혹시나 권한 요구 창을 이미 무시했나싶어 앱 재설치도 여러번 해봤는데도 결과는 같았다. 

공식문서를 뒤져보니 그 이유를 알 수 있었다.

Android Developers

Android API 레벨 33, 그러니까 Android 13부터는 해당 권한을 이용할 수 없고, 이미지, 비디오, 오디오에 대한 권한을 각각 요청해주어야 한다는 내용이었다.

ActivityCompat.requestPermissions(
    this,
    arrayOf(android.Manifest.permission.READ_MEDIA_IMAGES),
    REQUEST_READ_MEDIA_IMAGES
)

그래서 요구 권한을 위와 같이 바꿔준 후, manifest도 맞춰 변경해주니 바로 작동함을 확인할 수 있었다. 안드로이드의 업데이트가 생길 때마다 자세하게 확인하는 습관을 들여야겠다.