Я изучаю / разрабатываю игру для Android / Kotlin / Ktx , для которой потребуется распознаватель живой речи от cmusphinx.
Сейчас я пытаюсь проверить разрешения во время выполнения. Я уже закодировал интерфейс от ядра к Android.
Журнал выдает мне эту ошибку при выполнении функции 'setupPermissions' (код ниже):
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference
Iдумаю, это потому, что я не получаю текущую активность. Я не могу найти учебник, объясняющий это.
Как получить текущую активность для проверки разрешений на Android?
Код выглядит следующим образом:
Основной модуль:
package com.folotera.controller
interface PermissionManager {
fun checkPermissions()
}
Модуль Android:
class AndroidPermissionChecker : PermissionManager {
private val RECORD_REQUEST_CODE = 101
override fun checkPermissions(){
setupPermissions()
}
private fun setupPermissions() {
val permission = ContextCompat.checkSelfPermission(Activity(),
Manifest.permission.RECORD_AUDIO)
if (permission != PackageManager.PERMISSION_GRANTED) {
Log.i("TAG", "Permission to record denied")
makeRequest()
}
}
private fun makeRequest() {
ActivityCompat.requestPermissions(Activity(),
arrayOf(Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE),
RECORD_REQUEST_CODE)
}
}
..
class AndroidLauncher : AndroidApplication() {
...
override fun onCreate(savedInstanceState: Bundle?) {
...
val config = AndroidApplicationConfiguration()
initialize(aGame(AndroidPermissionChecker()), config)
...
}
}