From 7fedb154bf22d344cb34706320aab6a3e1a3ed6f Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 4 Feb 2024 01:23:02 +0100 Subject: [PATCH] Allow setting plugin package icon via metadata --- .../main/java/de/mm20/launcher2/plugins/PluginService.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/services/plugins/src/main/java/de/mm20/launcher2/plugins/PluginService.kt b/services/plugins/src/main/java/de/mm20/launcher2/plugins/PluginService.kt index ed453333..52b37e16 100644 --- a/services/plugins/src/main/java/de/mm20/launcher2/plugins/PluginService.kt +++ b/services/plugins/src/main/java/de/mm20/launcher2/plugins/PluginService.kt @@ -12,6 +12,7 @@ import android.net.Uri import android.os.Build import android.util.Base64 import android.util.Log +import de.mm20.launcher2.ktx.getDrawableOrNull import de.mm20.launcher2.ktx.tryStartActivity import de.mm20.launcher2.plugin.Plugin import de.mm20.launcher2.plugin.PluginPackage @@ -187,6 +188,14 @@ internal class PluginServiceImpl( override suspend fun getPluginPackageIcon(plugin: PluginPackage): Drawable? { return withContext(Dispatchers.IO) { try { + val appInfo = context.packageManager.getApplicationInfo(plugin.packageName, PackageManager.GET_META_DATA) + val iconRes = appInfo.metaData.getInt("de.mm20.launcher2.plugin.icon") + if (iconRes != 0) { + val icon = context.packageManager.getResourcesForApplication(plugin.packageName).getDrawableOrNull(iconRes, null) + if (icon != null) { + return@withContext icon + } + } context.packageManager.getApplicationIcon( plugin.packageName )