안드로이드 개발 팁 #25 - TED permission 라이브러리를 활용한 권한 요청steemCreated with Sketch.

앱 실행 도중에 권한 요청 코드를 만들어야 하는 경우가 있습니다. 예를 들면, 카메라 권한이 그렇지요. 안드로이드에서 제공하는 방법은 좀 복잡하고 어렵습니다. 그렇지만 TED permission이라는 라이브러리를 사용하여 보다 간편하게 구현할 수 있어요. 오늘은 이를 활용하여 권한 요청을 처리하는 방법을 정리해 봅니다.


모듈의 build.gradle 파일 수정

모듈단의 build.gradle 파일의 dependencies 블록 안에 TED permission 라이브러리를 포함해 주세요.

dependencies {
    // ...
    implementation 'io.github.ParkSangGwon:tedpermission-normal:3.3.0'
    // ...
}

PermissionListener 객체 정의

PermissionListener 인터페이스를 구현해야 합니다. 이것은 권한의 승인 또는 거부를 처리하기 위한 것입니다. 아래 예에서는 단순히 승인/거부 결과를 토스트로 알립니다.

private val permissionlistener: PermissionListener = object : PermissionListener {
    override fun onPermissionGranted() {
        Toast.makeText(
            this@MainActivity,
            "카메라 권한이 승인되었습니다.",
            Toast.LENGTH_SHORT
        ).show()
    }

    override fun onPermissionDenied(deniedPermissions: List<String>) {
        Toast.makeText(
            this@MainActivity,
            "카메라 권한이 거부되었습니다.",
            Toast.LENGTH_SHORT
        ).show()
    }
}

TedPermission 객체 정의 그리고 권한 체크

먼저 아래 코드로 예를 보여 드립니다. 이 코드는 권한이 필요한 시점에 실행하면 됩니다. TedPermission 클래스의 create() 정적 메소드를 호출하여 TedPermission 객체를 생성할 수 있구요. 이후 set... 메소드들을 호출하여 필요한 설정을 할 수 있습니다. 설정을 마치고 나서 check() 메소드를 호출해주세요. 그러면 권한 체크를 합니다. 권한이 결정이 안 되었으면, 이를 설정하기 위한 팝업이 뜨구요. 사용자가 무엇을 선택했느냐에 따라 등록된 PermissionListener 구현 객체의 onPermissionGranted() 또는 onPermissionDenied() 메소드가 실행됩니다.

TedPermission.create()
    .setPermissionListener(permissionlistener)
    .setRationaleMessage("앱을 사용하려면, 접근 권한이 필요합니다.")
    .setDeniedMessage("카메라 권한이 거부되었습니다. 이를 다시 얻으려면, [설정] > [권한]으로 이동하세요.")
    .setPermissions(
        Manifest.permission.CAMERA
    )
    .check()
  • setPermissionListener: 위에서 정의한 PermissionListener 구현 객체를 등록합니다.
  • setRationaleMessage(msg): 권한이 설정되지 않았으면, msg를 보여주는 팝업을 띄웁니다.
  • setDeniedMessage(msg): 사용자가 권한을 거부하면, msg를 보여주는 팝업을 띄웁니다.
  • setPermissions(permissions): 요청할 권한(들)입니다.

지난 안드로이드 개발 팁

Sort:  

Upvoted! Thank you for supporting witness @jswit.

 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.16
TRX 0.15
JST 0.029
BTC 56739.93
ETH 2400.98
USDT 1.00
SBD 2.30