В моем приложении мне нужно разрешение камеры, поэтому я написал некоторый код, чтобы запросить это разрешение и проверить, предоставлено ли разрешение.
Теперь есть проблема: я написал этот код несколько месяцев назад, когда не было ни панели навигации, ни фрагментов. Логично, что я запросил разрешения в файле 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
Мобильная версия