import android.Manifest import android.content.pm.PackageManager import android.os.Bundle import android.view.View import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.setFragmentResultListener import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.dj.baeminpractice2.R import com.dj.baeminpractice2.presentation.utils.REQUEST_KEY_PERMISSION_CHECK_READ_EXTERNAL_STORAGE import kotlinx.coroutines.delay import kotlinx.coroutines.launch class IntroSplashFragment : Fragment(R.layout.fragment_intro_splash) { private val neededPermission = Manifest.permission.READ_EXTERNAL_STORAGE override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) lifecycleScope.launch { delay(1000) checkPermissions() listenToFragmentResultListeners() } } private fun checkPermissions() { when (PackageManager.PERMISSION_GRANTED) { ContextCompat.checkSelfPermission( requireContext(), neededPermission ) -> navigateToIntroTermAgreementScreen() else -> navigateToCheckPermissionDialogScreen() } } private fun listenToFragmentResultListeners() { setFragmentResultListener(requestKey = REQUEST_KEY_PERMISSION_CHECK_READ_EXTERNAL_STORAGE) { requestKey, _ -> require(requestKey == REQUEST_KEY_PERMISSION_CHECK_READ_EXTERNAL_STORAGE) navigateToIntroTermAgreementScreen() } } private fun navigateToIntroTermAgreementScreen() { findNavController().navigate(resId = R.id.action_introSplashFragment_to_introTermAgreementFragment) } private fun navigateToCheckPermissionDialogScreen() { findNavController().navigate(resId = R.id.action_introSplashFragment_to_checkPermissionsDialogFragment) } }