Language/Kotlin

코틀린에서 권한 요청 하는 함수

Say simple 2020. 7. 16. 11:27
728x90
반응형

코틀린에서 권한을 요청하기 위해 정의한 함수

private fun requestPermissions(requestCode: Int, permission: String) {
        if (ContextCompat.checkSelfPermission(
                this,
                permission
            ) != PackageManager.PERMISSION_GRANTED || ActivityCompat.shouldShowRequestPermissionRationale(
                this,
                permission
            )
        ) {
            ActivityCompat.requestPermissions(
                this,
                arrayOf(permission),
                requestCode
            )
        }
    }

    // 모든 권한 불러오기
    private fun requestAllPermissions() {
        val storageRequestCode = 1001
        val locationRequestCode = 1002
        val coarseRequestCode = 1003

        requestPermissions(1001, Manifest.permission.READ_EXTERNAL_STORAGE)
        requestPermissions(1002, Manifest.permission.ACCESS_FINE_LOCATION)
        requestPermissions(1003, Manifest.permission.ACCESS_COARSE_LOCATION)
    }

 

외부 쓰기 권한이랑 위치 권한을 얻고 있다.

권한이 있는지 검사 -> UX를 위한 설명 출력 -> 권한 요청

shouldShowRequestPermissionRationale()는 안드로이드 문서 설명에서

더보기

이런 경우 사용할 수 있는 한 가지 접근방식은 사용자가 이미 해당 권한에 관한 요청을 거절한 경우에만

설명을 제공하는 것입니다. 이를 위해 Android는 shouldShowRequestPermissionRationale()이라는 유틸리티

메서드를 제공하는데 이 메서드는 사용자가 이전에 요청을 거부한 경우 true를 반환하고 사용자가 권한을

거부하고 권한 요청 대화상자에서 다시 묻지 않음 옵션을 선택했거나 기기 정책상 이 권한을 금지하는 경우

 false를 반환합니다.

라고 나와있는데 이전에 사용자가 요청을 거부한 경우 표시해주고 수락한 경우에는 표시하지 않게 만드는 것 같다.

728x90
반응형