안드로이드 공부/ 권한 (permission)

yellow·2021년 6월 5일
0

안드로이드 공부

목록 보기
26/28
post-thumbnail

권한

📎 일반 권한

  • 인터넷 접근 권한, 와이파이 접근 권한, 블루투스 접근 권한 등이 일반 권한에 속한다.
  • 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  // requestCode
    )
} 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", "거부")
        }
    }
}

권한을 얻는 타이밍

  1. 설치하자마자 필요한 권한 묻기
  2. 특정 기능을 사용하려고 할 때 묻기
    -> 사용자 입장에서 Best Practice!! 설치하자마자 권한을 물으면 사용자에게 부담을 줄 수 있음
profile
할 수 있어! :)

0개의 댓글