Allow setting plugin package icon via metadata

This commit is contained in:
MM20 2024-02-04 01:23:02 +01:00
parent 4cb14866af
commit 7fedb154bf
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -12,6 +12,7 @@ import android.net.Uri
import android.os.Build import android.os.Build
import android.util.Base64 import android.util.Base64
import android.util.Log import android.util.Log
import de.mm20.launcher2.ktx.getDrawableOrNull
import de.mm20.launcher2.ktx.tryStartActivity import de.mm20.launcher2.ktx.tryStartActivity
import de.mm20.launcher2.plugin.Plugin import de.mm20.launcher2.plugin.Plugin
import de.mm20.launcher2.plugin.PluginPackage import de.mm20.launcher2.plugin.PluginPackage
@ -187,6 +188,14 @@ internal class PluginServiceImpl(
override suspend fun getPluginPackageIcon(plugin: PluginPackage): Drawable? { override suspend fun getPluginPackageIcon(plugin: PluginPackage): Drawable? {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
try { 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( context.packageManager.getApplicationIcon(
plugin.packageName plugin.packageName
) )