Я переносу приложение в MVVM и чистую архитектуру, и мне не хватает одной части pazzel
проблемной области:
перечисление всех приложений на устройстве и отобразить их (фрагмент / действие)
приложение устройства представлено его именем пакета:
data class DeviceApp(val packageName: String)
вот как перечислены приложения устройства:
private fun listAllApplications(context: Context): List<DeviceApp> {
val ans = mutableListOf<DeviceApp>()
val packageManager: PackageManager = context.applicationContext.packageManager
val packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA)
for (applicationInfo in packages) {
val packageName = applicationInfo.packageName
ans.add(DeviceApp(packageName))
}
return ans
}
, как я понимаю, вызов listAllApplications () должен выполняться в UseCase внутри Domain Layer , который вызывается из ViewModel
, однако listAllApplications () получает Context и Уровень домена должен быть простым кодом
в чистой архитектуре / MVVM, в который следует поместить listAllApplications (context)
и в более общем смысле, как ViewModel должен взаимодействовать с android API-интерфейсами инфраструктуры, которые требуют Контекст (местоположение, et c.)?