Android / Kotlin — доступ к папке активов из функции верхнего уровня

#android #kotlin #android-activity #assets #android-context

#Android #kotlin #android-активность #активы #android-контекст

Вопрос:

В моем приложении я размещаю вспомогательные методы на верхнем уровне, не содержащиеся ни в одном классе, поэтому я могу вызвать любой из них из любого места. И у меня есть папка активов (app / src / main / assets) с текстовыми файлами в ней.

Я получаю доступ к этой папке внутри основного действия, используя этот код

 val file: String = applicationContext.assets.open("folderInAssets/filename.txt").bufferedReader().use {
        it.readText()
}
  

Однако, похоже, что я не могу получить доступ к папке активов из внешних действий или классов. applicationContext не определено, и я не могу получить доступ к Context . Я также пытался

 Application().assets.open(...)
  

но это выдает мне ошибку: java.lang.Исключение NullPointerException: попытка вызвать виртуальный метод ‘android.content.res.AssetManager android.content.Context.getAssets()’ для нулевой ссылки на объект

Мой вопрос: Как я могу получить доступ к папке из функции верхнего уровня в Kotlin? И есть ли предпочтительный способ «Kotlinic» для определения вспомогательных методов в приложении?

Заранее спасибо.

Комментарии:

1. Предоставьте ему общий URI. Прочитайте FileProvider.getUriForFile()

2. Передать контекст вашей функции?

3. @SaeedEntezari Я думал об этом, но должен быть более абстрактный способ.