Котлин навигация за задержку до тех пор, пока не будет признано состояние разрешения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)
}
}

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
)
}
}

< /code>
my androidmanifest.xml < /pbr />




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

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