После диалогового окна разрешения разрешения. Я перехожу к фрагменту камеры, но я вижу только черный экран.
Я предполагаю, что проблема в том, что навигация возникает слишком быстро до 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Котлин навигация за задержку до тех пор, пока не будет признано состояние разрешения
Anonymous » » в форуме Android - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Котлин навигация за задержку до тех пор, пока не будет признано состояние разрешения
Anonymous » » в форуме Android - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
- 1 Ответы
- 51 Просмотры
-
Последнее сообщение phosfin