APP을 사용하다 보면 사용자에게 권한을 승인받아야 할 때가 있다.
지도 app을 만들어 사용자의 위치를 받아오거나, 사진을 찍기 위해 카메라 접근 권한을 받아올 때 등등
오늘은 필요한 권한을 추가하고, 사용자에게 승인을 받고, 승인을 받았는지 여부를 확인 하는 작업을 해본다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
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("permissions","권한이 이미 있음")
}
}
onRequestPermissionsResult()를 ovveride하여 사용자의 응답에 따라 할 작업을 추가할 수 있다.
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("permissions" , "승낙되었습니다.")
}else {
// 거부된 경우 할 작업
Log.d("permissions" , "거부되었습니다.")
}
}
}