Обратный вызов 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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