감자주먹밥

[Kotlin]TedPermission 사용하기 (feat. Splash Activity) 본문

Android

[Kotlin]TedPermission 사용하기 (feat. Splash Activity)

JustHm 2021. 6. 28. 22:47
728x90
implementation 'gun0912.ted:tedpermission:2.2.0'

TedPermission은 권한체크를 할 때 귀찮은 작업들을 쉽게 해주기 위한 라이브러리다!

나는 권한 체크하는걸 직접 해보는데 너무 복잡하다 생각이되어서 찾아보고 쓰게 되었다,,

안드로이드에 대한 이해도가 부족한 탓이겠지만 라이브러리라도 잘 사용해 보자

출처: https://gun0912.tistory.com/61

[안드로이드/Android]유용한 라이브러리 - TedPermission(마시멜로우 권한체크)

위 블로그에서 더 자세히 볼 수 있다, 직접 만드신 분이기도 하구,,,


val permissionlistener: PermissionListener = object : PermissionListener {
            override fun onPermissionGranted() {
                Toast.makeText(this@SplashActivity, "권한허용.", Toast.LENGTH_LONG).show()
                SplashEnd()
            }

            override fun onPermissionDenied(deniedPermissions: ArrayList<String>?) {
                Toast.makeText(this@SplashActivity, "권한허용을 하지 않으면 이용할 수 없습니다.", Toast.LENGTH_LONG)
                    .show()
                SplashEnd()
            }
        }

먼저 permissionListener를 생성합니다.

권한을 허용 했을때, 거부 했을때의 리스너를 정의 해준 것 입니다.

TedPermission.with(this@SplashActivity)
            .setPermissionListener(permissionlistener)
            //.setRationaleMessage("앱을 이용하기 위해서는 접근 권한이 필요합니다")
            .setDeniedMessage("앱에서 요구하는 권한설정이 필요합니다...\n [설정] > [권한] 에서 사용으로 활성화해주세요.")
            .setPermissions(
                Manifest.permission.ACCESS_FINE_LOCATION
            ).check()

TedPermission 클래스를 통해 권한 체크 창을 띄워줍니다.

setPermissionListener에는 아까 만들어준 리스너를 달아주고,

setPermissions 에서 어떤 권한을 체크 할 것인지 넣어주면 됩니다.

setOOOMessage는 권한 체크할 때 띄우는 메시지와, 거부 했을때 뜨는 메시지를 띄우는 것입니다.

물론 리스너에서 설정을 해 주었지만 여기서는 창으로 메시지가 띄워집니다.


추가로 궁금해서 만들어 봤던 Splash Activity도 적어보겠습니다.

Splash Activity는 유튜브나 인스타, 카톡, 페북 등 앱을 실행할 때 아주 잠깐 로고가 가운데에 뜨는 화면이 나오는데 그게 바로 Splash Activity!

private fun SplashEnd() {
        if (TedPermission.isGranted(this@SplashActivity)) {
            Log.d("JUSTHM", "SPLASH END")
            val intent = Intent(this@SplashActivity, MainActivity::class.java)
            startActivity(intent)
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
            finish()
        } else {
            Log.d("JUSTHM", "IS DENIED")
            moveTaskToBack(true);                        // 태스크를 백그라운드로 이동
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                finishAndRemoveTask()
            };                        // 액티비티 종료 + 태스크 리스트에서 지우기
            android.os.Process.killProcess(android.os.Process.myPid());    // 앱 프로세스 종료
        }
    }

위에 Listener 정의를 할 때 코드를 보면 SplashEnd 라는 함수를 볼 수 있습니다.

여기에서 권한이 허용 됐으면 화면 애니매이션을 통해 전환을 해줍니다.

상당히 간단한 코드라 놀랐습니다.

그 외에 권한 거부 하면 TedPermission에 적었던 메시지가 먼저 뜨고 앱을 확실히 종료해버립니다!


간단히 만들어보고 싶은 걸 만들면서 막히는 것은 알아보면서 개발하니 정말 머리속에 잘 들어오는거 같은데

이것저것 많이 해 본것 다 블로그에 정리하기.

728x90
Comments