일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ios15
- snapkit
- Alert
- image
- NotificationCenter
- AsyncImage
- SwiftUI_Preview_Provider
- autolayout
- alamofire
- 코딩테스트
- Appearance변경
- CoreLocation
- UserDefaults
- SWIFT
- swiftUI
- programmers
- pod install
- EventKit
- Kotlin
- UIStackView
- format형식
- Java
- segue
- cocoapods
- MapKit
- kakaomap
- android
- ios
- 백준
- ViewModifier
- Today
- Total
감자주먹밥
[Kotlin]TedPermission 사용하기 (feat. Splash Activity) 본문
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에 적었던 메시지가 먼저 뜨고 앱을 확실히 종료해버립니다!
간단히 만들어보고 싶은 걸 만들면서 막히는 것은 알아보면서 개발하니 정말 머리속에 잘 들어오는거 같은데
이것저것 많이 해 본것 다 블로그에 정리하기.
'Android' 카테고리의 다른 글
[Kotlin] KakaoMap SDK 사용하기(메서드 사용편) (0) | 2021.06.28 |
---|---|
[Kotlin] Retrofit2 사용하기 (0) | 2021.06.28 |
[Kotlin]KakaoMap SDK 사용하기 (0) | 2021.06.28 |
[Java] TabLayout ViewPager2를 이용한 바텀네비게이션 ! (0) | 2021.06.28 |
[Java]Firebase 로그인 구현 (0) | 2021.06.28 |