포트폴리오

[업데이트] FMCheckPermission v1.2.2 (Android Library : Permission Checker)

freemmer 2019. 1. 31. 10:43
이전에 소개 드렸던 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)
}
}


반응형