Fix greyscale map providers not installed after a system reboot

This commit is contained in:
MM20 2022-05-21 14:40:14 +02:00
parent 84b7f64158
commit e16e6762b9
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -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<String> {
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<ResolveInfo> {
val packs = mutableListOf<ResolveInfo>()
val pm = context.packageManager