Compat icon provider: load activity info on IO dispatcher
This commit is contained in:
parent
31e250c826
commit
c47a1c1d9b
@ -18,19 +18,19 @@ class CompatIconProvider(
|
|||||||
override suspend fun getIcon(searchable: SavableSearchable, size: Int): LauncherIcon? {
|
override suspend fun getIcon(searchable: SavableSearchable, size: Int): LauncherIcon? {
|
||||||
if (searchable !is LauncherApp) return null
|
if (searchable !is LauncherApp) return null
|
||||||
val component = ComponentName(searchable.`package`, searchable.activity)
|
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 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)
|
AdaptiveIconDrawableCompat.from(resources, iconRes)
|
||||||
} ?: return null
|
} ?: return null
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user