일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 아비투스
- 끝말잇기
- 면접
- 한달어스
- 1일1커밋
- 소프시스
- 슬기로운 온라인 게임
- 어떻게 나답게 살 것인가
- 북한살둘레길
- 지지않는다는말
- 베드트레이
- 좌식테이블
- 리얼하다
- 테트리스
- 한달브런치북만들기
- 자취필수템
- 재택근무
- T자형인재
- 목적 중심 리더십
- 베드테이블
- 캐치마인드
- 안드로이드
- 한단어의힘
- 소프시스 밤부 좌식 엑슬 테이블
- 목적중심리더십
- 한달독서
- 함수형 프로그래밍
- 프래그먼트
- 브런치작가되기
- 커스텀린트
- Today
- Total
정상에서 IT를 외치다
[Android, 권한설정] 안드로이드 권한 설정 본문
안드로이드 마시멜로우 이상 부터는 권한 설정 동의가 필요합니다.
TedPermission 이라는 권한설정 라이브러리를 많이 사용하는데요.
이는 아래링크를 확인하시면 친절하게 설명 되어 있습니다
<중요>
안드로이드 오레오 버전 에서 TedPermission 사용시
java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation 에러가 발생합니다.
이는 제가 포스팅한 오레오에서 발생하는 풀 스크린 설정 에러 와 동일하게 TedPermissionActivity 에서 발생하는데요.
현재 포스팅 하고 있는 시점의 TedPermission 버전은 2.1.0 입니다.
추후 TedPermission 이 업데이트 되서 에러가 수정되기 전까지는 아래 코드로 버전 체크를 하셔야 되겠습니다.
저는 안드로이드에서 코드로 직접 권한 설정하는 법을 소개해 드릴려고 합니다.
1. AndroidMenifest 에 필요한 권한을 등록해 줍니다.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
저는 위치 권한 획득을 넣었습니다.
2. 권한 설정을 할 Activity 에 request 값으로 받아올 변수를 설정해 줍니다.
private static int REQUEST_ACCESS_FINE_LOCATION = 1000;
3. OS 버전이 마시멜로 이상일 경우 다음과 같이 권한 체크 함수를 설정해 줍니다.
// OS가 Marshmallow 이상일 경우 권한체크를 해야 합니다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
if(permissionCheck == PackageManager.PERMISSION_DENIED){
// 권한 없음
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
REQUEST_ACCESS_FINE_LOCATION);
} else{
// ACCESS_FINE_LOCATION 에 대한 권한이 이미 있음.
}
}
// OS가 Marshmallow 이전일 경우 권한체크를 하지 않는다.
else{
}
4. 권한 허용에 관한 팝업이 나오고 리턴데이터는 onRequestPermissionResult 로 전송됩니다.
아래 결과에서 requestCode 는 위에서 설정한 REQUEST_ACCESS_FINE_LOCATION 의 값이 1000 이 옵니다.
이 변수는 필요할 경우 사용하면 됩니다.
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// grantResults[0] 거부 -> -1
// grantResults[0] 허용 -> 0 (PackageManager.PERMISSION_GRANTED)
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// ACCESS_FINE_LOCATION 에 대한 권한 획득.
} else {
// ACCESS_FINE_LOCATION 에 대한 권한 거부.
}
}
위와 같이 안드로이드 상의 코드를 사용하여 권한 허용 포스터를 해봤습니다.
'안드로이드' 카테고리의 다른 글
[Android, SimpleDataFromat, Joda-Time ] 시간 함수 사용하기 (0) | 2018.04.12 |
---|---|
[Android, 인증서] 안드로이드 인증서 가져오기 (0) | 2018.04.05 |
[Android, Bluetooth] Bluetooth 권한 설정 (0) | 2018.04.04 |
[Android, Realm] Realm 하루 가계부 만들기 (0) | 2018.04.03 |
[Android, Oreo Notification] 오레오 알림 설정하기 (4) | 2018.03.30 |