권한
📎 일반 권한
- 인터넷 접근 권한, 와이파이 접근 권한, 블루투스 접근 권한 등이 일반 권한에 속한다.
- manifest에 등록만 하면 바로 사용할 수 있다.
- 앱 설치 시에 사용자에게 사용 권한을 물어본다.
- 예시) 인터넷 접근 권한
<uses-permission android:name="android.permission.INTERNET" />
📎 위험 권한
- API23 이상일 때 사용자에게 팝업창으로 권한 허용 동의 여부를 물어본다.
- 카메라, 주소록, 위치 정보 등이 위험 권한에 속한다.
- manifest에도 등록하고 추가적인 로직이 필요하다.
예시) 카메라 사용 권한
1. manifest에 추가
<uses-permission android:name="android.permission.CAMERA"/>
2. 추가적인 logic
- 해당 권한이 이미 허용되었는지 확인 후 없으면 권한 요청
val cameraPermissionCheck = ContextCompat.checkSelfPermission(
this,
android.Manifest.permission.CAMERA
)
if (cameraPermissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this,
arrayOf(android.Manifest.permission.CAMERA),
1000
)
} else {
Log.d("permissionsss", "권한이 이미 있음")
}
- 권한 허용 여부를 알려주는 메소드 onRequestPermissionsResult
: requestCode로 권한 내용 구분
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == 1000) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d("permissionsss", "승낙")
} else {
Log.d("permissionsss", "거부")
}
}
}
권한을 얻는 타이밍
- 설치하자마자 필요한 권한 묻기
- 특정 기능을 사용하려고 할 때 묻기
-> 사용자 입장에서 Best Practice!! 설치하자마자 권한을 물으면 사용자에게 부담을 줄 수 있음