Запросить разрешение камеры во фрагменте и ошибке контекста?Android

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

Сообщение Anonymous »

Итак, у меня есть действие с нижней панелью навигации на 3 страницы. Каждая из этих страниц представляет собой фрагмент.
В моем приложении мне нужно разрешение камеры, поэтому я написал некоторый код, чтобы запросить это разрешение и проверить, предоставлено ли разрешение.
Теперь есть проблема: я написал этот код несколько месяцев назад, когда не было ни панели навигации, ни фрагментов. Логично, что я запросил разрешения в файле MainActivity.kt.
Но теперь я запрашиваю это разрешение в логике фрагмента, но оно не работает.
Компилятор показывает мне выдается следующая ошибка:
"Несоответствие типов: предполагаемый тип является домашним, но ожидался контекст" для функции checkCameraPermissions()
и:
"Несоответствие типов: предполагаемый тип является домашним, но ожидалась активность" для функции requestCameraPermission()
("home" — это имя фрагмента и класса)
Проблема заключается в аргументе this, он всегда отмечен красным, что похоже на какую-то контекстную проблему.
Язык: Kotlin
Вот исходный код:< /p>

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

    private fun requestCameraPermission(){
// TODO request camera permission (for camera intent)
ActivityCompat.requestPermissions(this, cameraPermissions, CAMERA_REQUEST_CODE)
}

private fun checkCameraPermissions(): Boolean{
//check if camera permission is allowed, true if yes, false if no
val resultCamera = (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED)
//check if Storage permission is allowed, true if yes, false if no
val resultStorage = (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED)
//returns both results als false/true
return resultCamera
}
Я попытался это исправить, редактор кода больше не показывает никаких проблем, но приложение просто продолжает вылетать, если я пытаюсь его открыть.
Мое решение (не работает) ):

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

    private fun requestCameraPermission(){
//request camera permission (for camera intent)
activity?.let { ActivityCompat.requestPermissions(it, cameraPermissions, CAMERA_REQUEST_CODE) }
}
private fun checkCameraPermissions(): Boolean{
//TODO check if it works
//check if camera permission is allowed, true if yes, false if no
val resultCamera = (activity?.let { ContextCompat.checkSelfPermission(it, Manifest.permission.CAMERA) }
== PackageManager.PERMISSION_GRANTED)
//check if Storage permission is allowed, true if yes, false if no
val resultStorage = (activity?.let { ContextCompat.checkSelfPermission(it, Manifest.permission.WRITE_EXTERNAL_STORAGE) }
== PackageManager.PERMISSION_GRANTED)
Я уже гуглил и пытался переместить эти функции в логику активности, но мне нужны эти функции в других частях моего кода, поэтому у меня это не сработало.
Я все еще новичок в Kotlin и разработке мобильных приложений, поэтому рад услышать ваши ответы и прошу прощения за мой английский.

Подробнее здесь: https://stackoverflow.com/questions/788 ... text-error
Ответить

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

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

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

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

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