내가 간과하고 있었던것이 있었다.
SDK33 이상이면 미디어 승인이 안뜬다는 사실을... ㅠㅠ
현재는 아래와 같이 퍼미션을 받았었다.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
하지만 SDK33 이상부터는 매니패스트에 오디오, 이미지, 비디오를 따로따로 선언해줘야 한다고 한다.
나는 오디오만 가져올 예정이라 아래와 같이 하나만 추가해줬다.
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"
매니패스트에 추가 한 후 퍼미션을 받는 MainActivity 에서 VERSION_CODES.TIRAMISU(Android13) 버전을 체크하여
권한요청을 따로 받아야 한다고 한다.
수정 전 코드
val permission = arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE)
//외장메모리 읽기 승인
var flag = ContextCompat.checkSelfPermission(this, permission[0])
if (flag == PackageManager.PERMISSION_GRANTED) {
startProcess()
} else {
//승인요청
ActivityCompat.requestPermissions(this, permission, REQUEST_CODE)
수정 후 코드
val permission = arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE)
val permission_sdk33 = arrayOf(android.Manifest.permission.READ_MEDIA_AUDIO)
//외장메모리 읽기 승인
var flag = ContextCompat.checkSelfPermission(this, permission[0])
if (flag == PackageManager.PERMISSION_GRANTED) {
startProcess()
} else {
// //승인요청
if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.TIRAMISU) {
ActivityCompat.requestPermissions(this, permission_sdk33, REQUEST_CODE)
} else{
ActivityCompat.requestPermissions(this, permission, REQUEST_CODE)
}
}
}
위와 같이 수정을 해줬더니 둘다 성공!!!!
* 내가 참고한 블로그 : https://salmonpack.tistory.com/46
'안드로이드앱' 카테고리의 다른 글
빗썸 코인 리스트 가져오기 API 불러오기 통신하기 (1) | 2023.10.18 |
---|---|
안드로이드 스튜디오 Sqlite 혹은 Room 파일 erd만들기 (0) | 2023.10.09 |
java.lang.IllegalStateException 오류 해결하기 (0) | 2023.09.26 |
ViewPage2_ImageSlide 뷰페이저2 자동 이미지 슬라이드 만들어보기 (0) | 2023.09.26 |
retrofit2.HttpException: HTTP 400 (0) | 2023.09.25 |