Обратный вызов RegisterForActivityResult не запускается после перемещения обработки разрешений из действия во фрагмент.Android

Форум для тех, кто программирует под Android
Anonymous
Обратный вызов RegisterForActivityResult не запускается после перемещения обработки разрешений из действия во фрагмент.

Сообщение Anonymous »

ПРОБЛЕМА
Я пытаюсь перенести управление разрешениями из MainActivity во Fragment.
У меня возникли проблемы с правильным открытием камеры после утверждения разрешений.
ВОСПРОИЗВЕДЕНИЕ
Когда я нажимаю в первый раз, в консоли отображается журнал «noPermission», но после нажатия «Разрешить» ничего не происходит (то же самое, когда я нажимаю «Запретить»), хотя после нажатия во второй раз камера запускается, и я получаю журнал «hasPermission».
Фрагмент кода:

Код: Выделить всё

private const val PERMISSION = Manifest.permission.CAMERA

// inside onViewCreated()
ViewModel.visibleFabs.observe(viewLifecycleOwner) { items ->
fabMenuView.submitItems(items) { item ->
when (item) {
is FabItem.Camera -> fabClick()
...
}
}
}

private fun fabClick() {
if (requireContext().hasPermission(PERMISSION)) {
Log.d("Church permission", "hasPermission")
onTrailCameraFabClick()
} else {
Log.d("Church permission", "noPermission")
requestPermissionLauncher.launch(PERMISSION)
}
}

fun Context.hasPermission(permission: String) =
ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED
ЗАВИСИМОСТИ
  • Я добавил разрешение камеры в AndroidManifest.xml
  • Я добавляю следующие пакеты:

    Код: Выделить всё

    "androidx.activity:activity-ktx:1.8.2"
    и

    Код: Выделить всё

    implementation "androidx.fragment:fragment-ktx:1.6.2"
Я видел в стеке похожие проблемы, но без четкого решения, поэтому отправляю.


Подробнее здесь: https://stackoverflow.com/questions/798 ... ssion-hand

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