본문 바로가기
반응형
Programming/Android

안드로이드 Permission Denial: android.permission.READ_EXTERNAL_STORAGE 오류

by JAMINS 2016. 6. 25.

MP3 관련 앱을 개발하던 중 뜬금없는 Permission 오류가 발생.

Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media ... requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
폰은 갤럭시 S7. 마시멜로우 환경에서 테스트. 분명 Manifests에 permission을 지정했는데 왜 오류나는거지?

알아보니 M 버전(SDK23) 에서는 Permission을 별도로 지정해야한다. Manifest의 uses-permission은 SDK21버전에 적용되기 때문에 uses-permission을 적었음에도 불구하고 permission 오류가 났던것.

문득, 갤럭시 S7에서 앱을 사용할 때 이전 버전과는 다르게 매 Permission마다 허용하겠냐는 Dialog를 본적이 있는 것 같다. 아마도 이러한 방식으로 처리를 해야하는게 아닐까 싶다.

Android Developers 사이트에 관련 문서가 정의되어 있다. link

필요한 Permission을 직접 Request하여 Activity에서 결과를 받는다. requestPermission 이란 메서드를 정의해서 관련 코드를 넣었다. 그리고 이 메서드를 권한이 필요한 Activity의 onCreate 부분에 입력.

ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

이 부분에서 MY_PERMISSION_REQUEST_READ_EXTERNAL_STORAGE 는 Constant int 필드로 정의하면 된다. requestPermissions의 Response를 받을 수 있는데 여기서 사용된다.

https://developer.android.com/training/permissions/requesting.html#perm-request

댓글