Котлин навигация за задержку до тех пор, пока не будет признано состояние разрешенияAndroid

Форум для тех, кто программирует под Android
Anonymous
Котлин навигация за задержку до тех пор, пока не будет признано состояние разрешения

Сообщение Anonymous »

После диалогового окна разрешения разрешения. Я перехожу к фрагменту камеры, но я вижу только черный экран.
Я предполагаю, что проблема в том, что навигация возникает слишком быстро до frag.onrequestpermissionsresult (запрос кодирования, разрешения, грантрессфуст) < /code> передает разрешения. Я попытался использовать новый Luncher - это не работает причина (я использую NavController от Lazy {findNavController (r.id.nav_host)} Так что навигация не работает внутри пусковой установки. Я пытался использовать CamerapermissionViewModel с vasereOnce () на разрешении, вы все еще показываете, что вы все еще показываете, что вы все еще показываете, что у меня есть. заранее!
meaMactivity.kt Config: < /p>
@SuppressLint("MissingSuperCall")
override fun onRequestPermissionsResult(
requestCode: Int, permissions: Array,
grantResults: IntArray
) {
if (requestCode == REQUEST_CODE_MAIN_ACTIVITY) {
if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
alertDialog = localizationProvider.showManualLocationPickerDialog(
this,
REQUEST_CODE_MAIN_ACTIVITY
)
return
}
}
if (requestCode == cameraPermissionProvider.requestCode) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
navigateToCamera()
} else {
showCameraDialogPermission()
}
}

//super.onRequestPermissionsResult(requestCode, permissions, grantResults)
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host) as? NavHostFragment
navHostFragment?.childFragmentManager?.fragments?.forEach { frag ->
frag.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
}

inside mainActivity using this extention:
fun LiveData.observeOnceAfterInit(owner: LifecycleOwner, observer: (T) -> Unit) {
var firstObservation = true

observe(owner, object : Observer {
override fun onChanged(value: T) {
if (firstObservation) {
firstObservation = false
} else if (value != null) {
removeObserver(this)
observer(value)
}
}
})
}

private fun goNextWithCamera(next: () -> Unit) {
if (cameraPermissionProvider.isPermissionGranted()) {
next()
} else {
cameraPermissionProvider.requestPermission(this)
}
}
< /code>
camerapermissionprovider.kt
fun isPermissionGranted(): Boolean {
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
application.checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
} else {
ContextCompat.checkSelfPermission(
application.applicationContext,
Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED
}
}

fun requestPermission(activity: Activity) {
ActivityCompat.requestPermissions(
activity,
arrayOf(Manifest.permission.CAMERA),
requestCode
)
}
}



Подробнее здесь: https://stackoverflow.com/questions/796 ... knowledged

Вернуться в «Android»