본문 바로가기
안드로이드/권한

안드로이드 권한 다시 뭍지 않음 일때

by 김어찐 2024. 3. 22.
728x90
private fun requestAddressPermission(trigger: PublishSubject<Address>){

    val permissionListener = object : PermissionListener {
        override fun onPermissionGranted() {
            // 권한이 허용됨
            moveSearchContact(trigger)
        }

        @SuppressLint("CheckResult")
        override fun onPermissionDenied(deniedPermissions: java.util.ArrayList<String>) {
            // 다시 묻지않음 상태
            if (deniedPermissions.contains(Manifest.permission.READ_CONTACTS) && !ActivityCompat.shouldShowRequestPermissionRationale(requireActivity(), Manifest.permission.READ_CONTACTS)) {

                // 시스템 셋팅 팝업
                val permissionPopUp = RxButtonDialog(RxButtonDialog.Builder(requireActivity(),
                    requireActivity().resources.getString(R.string.address_permission_guide2),
                    requireActivity().getString(R.string.setting_do),
                    requireActivity().getString(R.string.close), false)
                )
                permissionPopUp.show()
                    .subscribe(
                        {
                            // 시스템 권한 팝업
                            if (it) {
                                // 안드로이드 설정으로 가기

                                val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
                                val uri = Uri.fromParts(
                                    "package",
                                    BuildConfig.APPLICATION_ID,
                                    null)
                                intent.data = uri
                                startActivity(intent)
                            }
                        },
                        {},
                        {},
                    )
            }
        }
    }

    TedPermission.with(requireContext())
        .setPermissionListener(permissionListener)
        .setPermissions(Manifest.permission.READ_CONTACTS)
        .check()
}
728x90