From e16e6762b9ecc010a6bb60e643ac4a4f77ae1a79 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sat, 21 May 2022 14:40:14 +0200 Subject: [PATCH] Fix greyscale map providers not installed after a system reboot --- .../de/mm20/launcher2/icons/IconPackManager.kt | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt b/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt index 6df3132e..126c3cef 100644 --- a/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt +++ b/icons/src/main/java/de/mm20/launcher2/icons/IconPackManager.kt @@ -6,7 +6,6 @@ import android.content.Intent import android.content.pm.PackageManager import android.content.pm.ResolveInfo import android.content.res.XmlResourceParser -import android.graphics.* import android.util.Log import de.mm20.launcher2.crashreporter.CrashReporter import de.mm20.launcher2.database.AppDatabase @@ -49,8 +48,11 @@ class UpdateIconPacksWorker(val context: Context) { fun doWork() { val packs = loadInstalledPacks(context).map { it.activityInfo.packageName } + val grayscaleProviders = loadInstalledGreyscaleProviders(context) val iconDao = AppDatabase.getInstance(context).iconDao() - iconDao.uninstallIconPacksExcept(packs) + iconDao.uninstallIconPacksExcept( + packs.union(grayscaleProviders).toList() + ) for (pack in packs) { try { @@ -71,6 +73,18 @@ class UpdateIconPacksWorker(val context: Context) { supportedGrayscaleMapPackages.forEach { installGrayscaleIconMap(it) } } + private fun loadInstalledGreyscaleProviders(context: Context): List { + val pm = context.packageManager + return SUPPORTED_GRAYSCALE_MAP_PROVIDERS.filter { + try { + pm.getPackageInfo(it, 0) + true + } catch (e: PackageManager.NameNotFoundException) { + false + } + } + } + private fun loadInstalledPacks(context: Context): List { val packs = mutableListOf() val pm = context.packageManager