마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

마시멜로 테스트시 API Level을 23으로 해야 하는지요...

0 추천
간단한 카메라 앱을 만들면서 공부를 하고있는 초보 입니다.

현재 프로젝트는 이클립스에서

Android : Project Build Target 을 Android 4.4.2    API Level 19 로 설정을 했구요

메니페스트는

<uses-sdk

android:minSdkVersion="14"

android:targetSdkVersion="23" />

<uses-permission android:name="android.permission.CAMERA"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />로 설정을 했습니다.

앱을 갤럭시 S4 와 AVD 에서 테스트를 했더니 잘 됩니다.

그런데 마시멜로 폰에서는 권한체크를 해야 한다고 해서 검색을 하던중 궁금한 사항이 있어 질문 드립니다.

 

현재 앱의 카메라 호출 버튼을 클릭하면 아래의 코드를 넣어 보려고 합니다.

if(checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
    requestPermissions(new String[] {Manifest.permission.CAMERA}, BIND_WAIVE_PRIORITY);
}

그런데 이 코드는 이클립스의 현재 프로젝트의 Build Target 을 Android 6.0    API Level 23 으로 설정을 해야

코딩이 가능한 것 같습니다. 이렇게 Build Target 의 API Level 을 19에서 23으로 올리면

갤럭시 S4 등 마시멜로가 아닌 폰에서는 테스트가 불가능 한게 아닌가 궁금 합니다.

그리고 이클립스에서 마시멜로 테스트를 할 때 AVD를 이용하려고 하는데 (마시멜로 폰이 없어서요..)

AVD를 마시멜로에 맞게 설정하려면 어떻게 해야 하는지 궁금 합니다.

현재 프로젝트 환경에서 마시멜로를 테스트할 수 있는 환경을 만들려면 어떻게 해야 하는지

선배님들에 도움 부탁드립니다.
삼국지 (750 포인트) 님이 2016년 7월 13일 질문

1개의 답변

+1 추천
 
채택된 답변

targetSdkVersion이 높다고 해도, minSdkVersion 이상인 디바이스에서 실행됩니다.

김조조 (5,540 포인트) 님이 2016년 7월 13일 답변
삼국지님이 2016년 7월 13일 채택됨
답변주셔서 감사합니다.
메니페스트의 targetSdkVersion 은 이해했습니다.
그런데 프로젝트의 Build Target 을 Android 4.4.2    API Level 19 로 설정하고
if(checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
    requestPermissions(new String[] {Manifest.permission.CAMERA}, BIND_WAIVE_PRIORITY);
}
을 사용할 수 없는것 같습니다.
이 코드를 사용하려면
프로젝트의 Build Target 을 Android 6.0    API Level 23으로 설정을 해야
가능한데 이럴경우 갤럭시S4 에서는 테스트가 안되는 것 같습니다.
Build Target 을 Android 6.0    API Level 23으로 설정하고
갤럭시S4에서 마시멜로의 권한을 테스트할 수 있는 방법이 없을까요?
Android 6.0 부터 동적으로 권한을 받도록 바뀌었습니다.
이전 버전의 경우 설치시에 필요한 권한을 한 번만 확인해 주는 것이고, 그 이후에 checkSelfPermission하는 코드는 아예 없는 것이죠.
기본적으로 OS버전에 따라서 코드를 분기하셔야 할 것이구요.
6.0의 코드를 5.0이나 4.4에서 테스트 할 수는 없는 것입니다.
...