Compat icon provider: load activity info on IO dispatcher

This commit is contained in:
MM20 2023-03-01 20:48:36 +01:00
parent 31e250c826
commit c47a1c1d9b
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -18,19 +18,19 @@ class CompatIconProvider(
override suspend fun getIcon(searchable: SavableSearchable, size: Int): LauncherIcon? {
if (searchable !is LauncherApp) return null
val component = ComponentName(searchable.`package`, searchable.activity)
val activityInfo = try {
context.packageManager.getActivityInfo(component, 0)
} catch (e: PackageManager.NameNotFoundException) {
return null
}
val iconRes = activityInfo.iconResource
val resources = try {
context.packageManager.getResourcesForApplication(activityInfo.packageName)
} catch (e: PackageManager.NameNotFoundException) {
return null
}
val icon = withContext(Dispatchers.IO) {
val activityInfo = try {
context.packageManager.getActivityInfo(component, 0)
} catch (e: PackageManager.NameNotFoundException) {
return@withContext null
}
val iconRes = activityInfo.iconResource
val resources = try {
context.packageManager.getResourcesForApplication(activityInfo.packageName)
} catch (e: PackageManager.NameNotFoundException) {
return@withContext null
}
AdaptiveIconDrawableCompat.from(resources, iconRes)
} ?: return null