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
'Programming > Android' 카테고리의 다른 글
안드로이드(Android) JSON을 객체 배열로 변환하기 (0) | 2020.06.14 |
---|---|
안드로이드 앱에 애드몹(Admob) 광고 적용 방법 (0) | 2020.05.27 |
Android Studio 단위테스트(Unit Test) 하기 (1) | 2016.02.21 |
Android Studio에서 나만의 Library 만들어보기 (7) | 2015.12.10 |
안드로이드 Layout에 gradient로 그림자효과 주기 (Layout Shadow gradient) (0) | 2015.08.06 |
댓글