Я пытаюсь перенести управление разрешениями из 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
Мобильная версия