글
안드로이드 6.0 이후부터는 일부 권한의 경우 단순히 AndroidManifest.xml 에 명시하더라도 작동이 되지 않는다.
설치될 때 권한을 부여하는 것이 아니라 실행되는 도중 런타임에 권한을 요청하기 때문이다.
하지만 여전히 AndroidManifest.xml 에 권한을 명시해야 한다.
예제의 경우 주소록 읽기 권한을 요청한다.
권한 요청
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// 권한이 없으므로 요청
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS 의 경우 사용자 정의 값으로
// 응답 처리에 필요
}
응답 처리
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 권한 획득
} else {
// 권한 획득 실패
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
별도의 요청이 필요한 권한 목록
CALENDAR | |
CAMERA | |
CONTACTS | |
LOCATION | |
MICROPHONE | |
PHONE | |
SENSORS | |
SMS | |
STORAGE |
출처 : https://developer.android.com/training/permissions/requesting.html?hl=ko
'Android > Tips' 카테고리의 다른 글
Google Maps utility library 소개 (0) | 2018.01.15 |
---|---|
Google Map에 사용자지정 액티비티 전환 적용 방법 (0) | 2018.01.08 |
Navigation Drawer 분석 (1) | 2013.11.13 |
커스텀 리스트뷰에서 클릭시 클릭된 아이템 배경 색 설정 (1) | 2012.10.15 |
커스텀 리스트뷰 만들기 (0) | 2012.10.14 |
RECENT COMMENT