이전에 소개 드렸던 FMCheckPermission이 업데이트 되었습니다. ([소개] FMCheckPermission (Android Library : Permission Checker))
FMCheckPermission 는 ‘앱 권한 획득’을 쉽게 구현할 수 있도록 도와주는 라이브러리 입니다.
사용법이 좀 더 쉬어졌습니다.
# 사용방법 (상속받아 편하게 사용)
1. 아래 클래스 중에서 하나의 클래스를 상속받습니다. (상속받지 않아도 되는 방법은 아래에 있습니다)
- FMCheckPermissionActivity : Activity를 상속 받음
- FMCheckPermissionAppCompatActivity : AppCompatActivity를 상속 받음
- FMCheckPermissionAppFragmentActivity : FragmentActivity를 상속 받음
2. Permisstion 체크를 원하시는 부분에 아래와 같이 사용하시면 됩니다.
// READ_PHONE_STATE, READ_CONTACTS, SYSTEM_ALERT_WINDOW 권한을 체크 합니다.
checkPermission(
arrayOf(
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.READ_CONTACTS,
Manifest.permission.SYSTEM_ALERT_WINDOW)
, pAllowedFunc = {
// 요청한 모든퍼미션이 허용되었습니다.
Snackbar.make(btnCheckPermission
, "OK!!", Snackbar.LENGTH_SHORT).show()
}
, pDeniedFunc = {checkedDoNotAskPermissions, permissions ->
// 요청한 퍼미션이 거부되었습니다.
if (checkedDoNotAskPermissions.isNotEmpty()) {
// '다시묻지않음을체크'하여 '거부'했습니다. 이경우 설정으로 이동하여 사용자가 직접 허용해야합니다.
Snackbar.make(btnCheckPermission
, "Requested Permissions denied with 'Don't ask again' : $checkedDoNotAskPermissions"
, Snackbar.LENGTH_LONG)
.setAction("move setting") { movePermissionSetting() }.show() //알림설정으로 이동
} else {
// 퍼미션을 '거부'했습니다.
Snackbar.make(btnCheckPermission
, "Requested Permission denied : $permissions", Snackbar.LENGTH_SHORT).show()
}
})
# 사용방법 (FMCheckPermission 직접사용)
FMCheckPermission을 직접 사용하는 방법도 있습니다.
아래 FMCheckPermissionActivity가 어떻게 구현되어 있는지 보시면, FMCheckPermission 인스턴스를 하나 생성하여 호출하는 것으로 해결됩니다.
다만, 편의성을 위해 checkPermission()과 movePermissionSetting()함수를 추가하였고, onRequestPermissionsResult()과 onActivityResult()에서 FMCheckPermission의 해당 함수를 호출해 주셔야 합니다.
abstract class FMCheckPermissionActivity: Activity() {
private lateinit var checker: FMCheckPermission
protected fun checkPermission(permissions: Array<String>
, pAllowedFunc:() -> Unit
, pDeniedFunc:(checkedDoNotAskPermissions: Array<String>, permissions: Array<String>) -> Unit)
{
checker = FMCheckPermission.instance(this)
checker.check(permissions, pAllowedFunc, pDeniedFunc)
}
protected fun movePermissionSetting() {
checker.moveSetting()
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
checker.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
checker.onActivityResult(requestCode)
}
}
Reference
반응형
'포트폴리오' 카테고리의 다른 글
Citimobile 2.0.01.00 출시 (0) | 2021.06.24 |
---|---|
[소개] FMNotification (Android Library : Push(FCM) Receiver) (0) | 2019.01.28 |
[소개] FMCheckPermission (Android Library : Permission Checker) (0) | 2019.01.16 |