From e33c51a3202833d8a6ed94eee45b4c54a91df6ff Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Sun, 29 Jan 2023 02:05:15 +0800 Subject: [PATCH] Modify inject module resources to system ui in SystemUIHooker - Merge app support notification icon type to vector - Remove all android adb hardcode base64 icon data - Merge android default icon to "com.android.internal.R.drawable.stat_sys_adb" --- .../notify/hook/entity/SystemUIHooker.kt | 33 +++--- .../coloros/notify/param/IconPackParams.kt | 107 ------------------ .../notify/utils/tool/IconAdaptationTool.kt | 64 +---------- app/src/main/res/drawable/ic_unsupported.xml | 12 ++ 4 files changed, 30 insertions(+), 186 deletions(-) create mode 100644 app/src/main/res/drawable/ic_unsupported.xml diff --git a/app/src/main/java/com/fankes/coloros/notify/hook/entity/SystemUIHooker.kt b/app/src/main/java/com/fankes/coloros/notify/hook/entity/SystemUIHooker.kt index e49c539..475673a 100644 --- a/app/src/main/java/com/fankes/coloros/notify/hook/entity/SystemUIHooker.kt +++ b/app/src/main/java/com/fankes/coloros/notify/hook/entity/SystemUIHooker.kt @@ -30,7 +30,6 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.content.res.ColorStateList -import android.graphics.Bitmap import android.graphics.Color import android.graphics.Outline import android.graphics.drawable.BitmapDrawable @@ -45,6 +44,7 @@ import android.view.ViewOutlineProvider import android.widget.ImageView import androidx.core.graphics.drawable.toBitmap import androidx.core.view.children +import com.fankes.coloros.notify.R import com.fankes.coloros.notify.bean.IconDataBean import com.fankes.coloros.notify.data.DataConst import com.fankes.coloros.notify.hook.HookConst.ANDROID_PACKAGE_NAME @@ -351,28 +351,26 @@ object SystemUIHooker : YukiBaseHooker() { /** * 自动适配状态栏、通知栏自定义小图标 + * @param context 实例 * @param isGrayscaleIcon 是否为灰度图标 * @param packageName APP 包名 - * @return [Pair] - ([Bitmap] 位图,[Int] 颜色) + * @return [Pair] - ([Drawable] 位图 or null,[Int] 颜色) */ - private fun compatCustomIcon(isGrayscaleIcon: Boolean, packageName: String): Pair { - var customPair: Pair? = null + private fun compatCustomIcon(context: Context, isGrayscaleIcon: Boolean, packageName: String): Pair { + var customPair: Pair? = null + val statSysAdbIcon = runCatching { + context.resources.drawableOf("com.android.internal.R\$drawable".toClass().field { name = "stat_sys_adb" }.get().int()) + }.getOrNull() ?: context.resources.drawableOf(R.drawable.ic_unsupported) when { /** 替换系统图标为 Android 默认 */ (packageName == ANDROID_PACKAGE_NAME || packageName == SYSTEMUI_PACKAGE_NAME) && isGrayscaleIcon.not() -> - customPair = Pair( - when { - isUpperOfAndroidT -> IconPackParams.android13IconBitmap - isUpperOfAndroidS -> IconPackParams.android12IconBitmap - else -> IconPackParams.android11IconBitmap - }, 0 - ) + customPair = Pair(statSysAdbIcon, 0) /** 替换自定义通知图标 */ prefs.get(DataConst.ENABLE_NOTIFY_ICON_FIX) -> run { iconDatas.takeIf { it.isNotEmpty() }?.forEach { if (packageName == it.packageName && isAppNotifyHookOf(it)) { if (isGrayscaleIcon.not() || isAppNotifyHookAllOf(it)) - customPair = Pair(it.iconBitmap, it.iconColor) + customPair = Pair(BitmapDrawable(context.resources, it.iconBitmap), it.iconColor) return@run } } @@ -396,11 +394,10 @@ object SystemUIHooker : YukiBaseHooker() { isGrayscaleIcon: Boolean, packageName: String, drawable: Drawable - ) = compatCustomIcon(isGrayscaleIcon, packageName).first.also { + ) = compatCustomIcon(context, isGrayscaleIcon, packageName).first.also { /** 打印日志 */ printLogcat(tag = "StatusIcon", context, packageName, isCustom = it != null, isGrayscaleIcon) - }?.let { Pair(BitmapDrawable(context.resources, it), true) } - ?: Pair(if (isGrayscaleIcon) drawable else nf.compatPushingIcon(drawable), isGrayscaleIcon.not()) + }?.let { Pair(it, true) } ?: Pair(if (isGrayscaleIcon) drawable else nf.compatPushingIcon(drawable), isGrayscaleIcon.not()) /** * 自动适配通知栏小图标 @@ -421,7 +418,7 @@ object SystemUIHooker : YukiBaseHooker() { iconColor: Int, iconView: ImageView ) = runInSafe { - compatCustomIcon(isGrayscaleIcon, packageName).also { customPair -> + compatCustomIcon(context, isGrayscaleIcon, packageName).also { customPair -> when { prefs.get(DataConst.ENABLE_NOTIFY_ICON_FORCE_APP_ICON) && isEnableHookColorNotifyIcon(isHooking = false) -> iconView.apply { @@ -434,7 +431,7 @@ object SystemUIHooker : YukiBaseHooker() { /** 设置不要裁切到边界 */ clipToOutline = false /** 重新设置图标 */ - setImageBitmap(customPair.first ?: drawable.toBitmap()) + setImageDrawable(customPair.first ?: drawable) /** 是否开启 Android 12 风格 */ val isA12Style = prefs.get(DataConst.ENABLE_ANDROID12_STYLE) @@ -544,6 +541,8 @@ object SystemUIHooker : YukiBaseHooker() { IconAdaptationTool.prepareAutoUpdateIconRule(context, prefs.get(DataConst.NOTIFY_ICON_FIX_AUTO_TIME)) } onCreate { + /** 注入模块资源 */ + injectModuleAppResources() /** 注册发送适配新的 APP 图标通知监听 */ registerReceiver(object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent?) { diff --git a/app/src/main/java/com/fankes/coloros/notify/param/IconPackParams.kt b/app/src/main/java/com/fankes/coloros/notify/param/IconPackParams.kt index 6f3315b..db53ddd 100644 --- a/app/src/main/java/com/fankes/coloros/notify/param/IconPackParams.kt +++ b/app/src/main/java/com/fankes/coloros/notify/param/IconPackParams.kt @@ -25,7 +25,6 @@ package com.fankes.coloros.notify.param import android.content.Context -import android.graphics.Bitmap import android.graphics.Color import com.fankes.coloros.notify.bean.IconDataBean import com.fankes.coloros.notify.data.DataConst @@ -44,112 +43,6 @@ import org.json.JSONObject */ class IconPackParams(private val context: Context? = null, private val param: PackageParam? = null) { - companion object { - - /** - * Android 11 系统默认图标 - * @return [Bitmap] - */ - val android11IconBitmap by lazy { - ("iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" + - "CHwIZIgAAAPkSURBVHic7ZvfVdswFMY/9fS93qDZoNmg6QS4E8AGdAMYgQ1gg4QJkk5AOkGcCUgm\n" + - "+Pog27EdCa7+WDIn/J4gx77W/SzpyvdKwCefdFE5H06yAPCj/vefUuqQqy1JhCA5B3AFYFH/NAdQ\n" + - "WC4/ANjWf28APCultpZrozGaECQbx0sAs0BzFYAVgI1S6jm0baNDsiB5R/KV4/FK8i63r1ZIXpPc\n" + - "jSjAkB3J69x+t5AsEwtgEqTMLcJjRgGGPOYQoCC5zu25gTV1SE4iwpx5h8J77KjDtRNO4ZPkAsAS\n" + - "9jXAVDgA+K2U2khvEAtRq7zG9EVoOAD4JV2MfZFcRD3uXHvCEcBfh+vf429tU0oBYMmYcwbJF+H4\n" + - "3FKH09ng/jnJG5IHh7F+qO+ZD2zN6mdshXbWsUSQhsh7ga2C5Epga0XBmyR5L2xbWGilVl6C04KG\n" + - "5MMbth6m0MbhQyRhcuVhtyBZGWxV9BjTlPWynavdxviNwLhXw2v7C4M95/hf27IJO+TGx7CkNzh1\n" + - "Y8Nzuo0PyjmQfBK019orbOHzD2Q5hMqr1Se6zse0ZWNGy6RuE+I24sOl98e09RZG386EoJ5dU60e\n" + - "xUvgiBQ0RBBTj1gYfkuB10Tpef+ZjyYhrvzbEsT3wPtdhDjzsSdEHb5CE62+zEPCJ4CfDrfMhs8a\n" + - "9oi8KS//j6RHuL/A3vAYCpFrfmiYAXj3m6VLPfH5vMDePaLP8MTckhT1DOq0/jJ6C+hejwjqQTQv\n" + - "sxteqUsEps/wK8pTA1b7XbtfB22bUvapAPAEACQBveZ4q1ToY7+lHRpMlf31Z4HIL6rrc3eOCF3Q\n" + - "fERan6c4WWahK8TopfcJ0vrcCpFzk0Yuuj5f8tDolQaGQsSsQ0yd3lRwyT2ix1CIHImSXPSy70Mh\n" + - "nFPzH5jeS+8JURdM90mbk4f9sDhsmiMuoVec+WgS4hLmiTMfz4RQSq3gVn4PIUci6Fj72MMWPqUV\n" + - "rJSZ51jIq3OU1xJDS36p92K5V9MoKwLvGLcIPDZuReBOYyW9wjlnSHmROSb+tVXm2SgyFmGlCsrK\n" + - "7aRgozh1T1iO56uVpyAROg5shA98oc4wmzaTXXPcXfs2ROsi0T5L6glxC7f6ZHMAJWfRaA9gLkk6\n" + - "uW443QD4FtCwlBwBLKJuOAXaD7IS6VadIRwBlKMegarHuySs5qKiZ1XdR4yC8gk0JRvmKFRRHlpT\n" + - "ECdEBohRMu9QqZj7KFMX6m+TlIJU9P12SAH1RnGXXfiuHCjYAO/KmAdgS5wOwIZuFNvjdAB2lFRi\n" + - "yiPRjTCATsjYFmZHnIovjfMf90i0BOpQ18T87SXWXz+ZKv8BVnFXPlKejoIAAAAASUVORK5CYII=").bitmap - } - - /** - * Android 12 系统默认图标 - * @return [Bitmap] - */ - val android12IconBitmap by lazy { - ("iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" + - "CHwIZIgAAANkSURBVHic7ZvNkRoxEIWfXL4vIbBVvpsMTAhksIRgRwAZsBnAxWfjCMARGM4+MBkw\n" + - "RPB8kKh1zagljUYzwlv6qrZ2a0fo50lq9agboFAoFApeVI5GSX4xf07NDwDUAE4AbkqpU45+9Ybk\n" + - "hOTK8/yF5JbklX6uJH+QfPG0uyI5ST+iCMwgf5sBbC3PVoGDd4nSGrARlabtvGI0RLizNc9eegrQ\n" + - "5EJy0RDhTj4xBBHu/EkoQGjdvcT40EOLKYBn4dmnHvX6kOp+xpvh7UyvU4PkDMARwFOHj50B7KBP\n" + - "iEopVZmZnOHtFFkA+NyhzhuAedbThuSMZB2wpHckg2eM5JzkMaDem5mQ/JD86ehoTXLeo+6lR+jv\n" + - "KccSjZk5iRMTWHP6V1200MmgPtYGE+GfdlxiXFK1E9u5pdCxmh3sQYf2Jg4xlqnb69IxaTUsBmxz\n" + - "LbR5GKpNX4dmQoeOI7RdCW1Hnx59HCrJQL02/0FySnJD8kDtHovbJrDsumOfhoN297oWyjZnUDRu\n" + - "oWVptxX7VOMLRliaO0s56XhtLeOOZfe2grHj6bM1bFSJ63OR//KGsqG0nhZsL3dRsNCyJBehqyeE\n" + - "jzEfAiA5SlYbAW3EvkK/WFWQjV2XshWAX96eDoljL+d3dSNJbSP+W4oQhiKEoQhhiD01JDYUvMsR\n" + - "+RZzZZdaiEe4Mou6Aylbw1CEMBQhDLE2okZu91bbgi6xj/dJaje/bA1DEcJQhDAUIQxRp4a5BdpY\n" + - "HkW5t49AHxfbZp2nGO8uUQoJRN2bRm0Nx6yP+a5hFUIpNZ4QDrILMTq0xxWuI7ZvS1SL3pZ9VoQt\n" + - "xjnhCFFp6rCB7XW7FWAaHMqxjcFzFajjosliGik6dBI65Ipb9G1TCuyMGWVrdUpKFLlygARQ6ki5\n" + - "lMSaL1HEdE7KVbikXKp0J7jmd+LoTia7phDDIwL5KBE2kq8eMZxZ9p6653TndI9/UkiYGZMM551D\n" + - "l5mjtgfN5PMmydKUkn1xhdo4HuG/PjsB2EO/E1QAzkqpmnoLPUF7p0v4vdQzdNpx7jhKm8CVkYKk\n" + - "OZyDYMTYDSjC49iEEKgdH+lojaFmbl8hFurVsWZY9r5LgDUffSuEQu2F7gNFqam313IsAXJ93XEG\n" + - "/fZ4/w3o06QGAKXU4Nm7hUKhUIjgL/9/6dhvvYPfAAAAAElFTkSuQmCC").bitmap - } - - /** - * Android 13 系统默认图标 - * @return [Bitmap] - */ - val android13IconBitmap by lazy { - ("iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFG2lUWHRYTU" + - "w6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZ" + - "VN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0i" + - "QWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuZGFiYWNiYiwgMjAyMS8wNC8xNC0wMDozOTo0NCAgICA" + - "gICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi" + - "1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwO" + - "i8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l" + - "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4" + - "wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RX" + - "Z0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDc" + - "mVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjQgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRl" + - "PSIyMDIzLTAxLTI3VDAxOjQ2OjAzKzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMy0wMS0yN1QwMTo" + - "0NjozOSswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMy0wMS0yN1QwMTo0NjozOSswODowMCIgZG" + - "M6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQc" + - "m9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphZjQwOGEx" + - "ZC0wM2M4LTRiNTgtYmQxMC1kNDBkYTg4MDU0ODUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6YWY" + - "0MDhhMWQtMDNjOC00YjU4LWJkMTAtZDQwZGE4ODA1NDg1IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SU" + - "Q9InhtcC5kaWQ6YWY0MDhhMWQtMDNjOC00YjU4LWJkMTAtZDQwZGE4ODA1NDg1Ij4gPHhtcE1NOkhpc" + - "3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFu" + - "Y2VJRD0ieG1wLmlpZDphZjQwOGExZC0wM2M4LTRiNTgtYmQxMC1kNDBkYTg4MDU0ODUiIHN0RXZ0Ond" + - "oZW49IjIwMjMtMDEtMjdUMDE6NDY6MDMrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIF" + - "Bob3Rvc2hvcCAyMi40IChNYWNpbnRvc2gpIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L" + - "3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/" + - "PqALyqMAAAU1SURBVHic7Vvvces2DP+l1+9lJ6i7gTaoOkG0QdQJnEwQbxC/CaK3gd4EUSaIOkGcCSx" + - "PgH4AdVEk/gEp2sy95nfHsywBIAQRJABKV0SELwC/5Fbgs+AShtgAeATwBOABgBLwKABbzXMv5FkHIj" + - "pnq4joSB/xQkTKwaM0zRSvRFScU9dzj4gKy6dZALh18Nxqmik2AOoE+lhxdebJ8gjzsB4A/A2gn50vw" + - "O5g4jkA+DORXguc2xAu4T3YGIP+r8BGKBw8Vwl0MgvOaIgRvf4tBLRnM8SvkXxb8BMcAHyz0JRCWUVA" + - "vwWW7jRCopMdETPsk2FGL2c0G8PMnwJPtFxxCq3DnC7ovkJd4xYcC5jQgCc0BZ7hVfBTkaEHsAc/+Qr" + - "21eQfrZMIoYboAPwVwpARz5C7Z3Ac0QXS50QXQpzbECfwk3vWxynRhRDHLJ8d4tzjBKDV/C3e44c5FN" + - "j3S/37W0RfQW4BIGrVqANn+p4451iTr/SBfdah/cQoVgiVOcQo5Gi1lilBESo/JumSDLnv4OCniZBvQ" + - "6NlfhfQlsHSAy2naBm8zHGbcBTY2q1Hh1dyp/qLZpssCwDX+ngABzElOKBSDrsGBTErUYMLPjYcwLp0" + - "4PtR+vwPmMJ0g3Uqj7VzjoTQkWFDNZdlGvrHCMGNRdGSiB6JaEuBQ3Wiz1bLKC00TYS+x7kck+KhOJD" + - "5JtWMbm+g8bX9TIatn0OE3h8Mm6JUt4M5OCo8/yWQyBi0DutgsHDIUOs9T3SY0MbMIdM5YPDQ9gF6L1" + - "zZ5pedUOBi0jHIqmldBbrQMkxuMW2VUOfOJEv6NEzwPaEcbToCTahtvK45Yg/gznG9Xe2X6dE6rt3BE" + - "eP4JkuX4M7DmwOd41rrYpSk4TaC32FPpXNBgfdSTHBWwH1V7NpxrfXwfjbUcLiGa0QU4Fi+SKxQLvTg" + - "XKg3XTQZogRwgzPvNWZEA07lu+nJuSEe4N6g/Zmwx2RVnK4aO/x/jADwve7GP9PJsgwU9LxSkQLLwuw" + - "J9i09KUIKy+V4MDXEENhhFcEzRYel0j1iymzvULAvnyYM48HUNdrATqtA+kugCqRvx4OpIRrwLrJ0o6" + - "UM7PQSKIV0J/C9NuMJ0/KpwP67AVv4ek6gMYCjy1h0WLpG+MbMR9je0AG4VtmCa5k95m4tyOhKRzbnS" + - "8NdzZTqdyvkudLw0scvqVB1sO8l3Av4LwXb6wrfIEgQpaW6g+V8gc8RgdZgVzbhIBEgNcTguHaZF0Lt" + - "UHCPzEEiRGIIX0cb2IflJfAA+2gYryufEIkhJIJq5AnPd/C7poLkQXlm051jJjbBWhM0tLWrRh2o284" + - "lz9WRorhdr63wRtYY4j5CryM5KuEu11CImwT34IJODK8PSsveRfIq20WXIQ4A3iI6BNhvX8AFnlS40T" + - "LrSP5/4VhKfZPlznDuBA5Xf8BtqA04ln+BPUyX4BrAq5a1cdC9TfQy5Ut7Zy8Cf6yIt8haWu44KX1e6" + - "qOPRHRD9t20Tl+70bRHoezWoFetzzckSAVSvJSuwEMu5u23FDiBR8qwRkiK3fAB66tKa9Ajwf7K18dt" + - "GqkM8UciOdn6TvXhSu6PR1d/0HIJ17gDK3oF/nRJEpu8adqRz7Urnwa+ZUXYBsuyZso9NoLlcGPgs+U" + - "WQ4p7SGWIwmAMkxHG1jiM0Dj45sYYKNH3oLHfdM3R42O1qoO7PNbBHn67+BpwzFLO/q/Gub/ys0HBHI" + - "QlCY5ikCuOGGDOY3bI9PJJrhExosT77lSLjK8j5TbEp8FXiK3xH4bAld9cxsQDAAAAAElFTkSuQmCC").bitmap - } - } - /** * 已存储的 JSON 数据 * @return [String] diff --git a/app/src/main/java/com/fankes/coloros/notify/utils/tool/IconAdaptationTool.kt b/app/src/main/java/com/fankes/coloros/notify/utils/tool/IconAdaptationTool.kt index 77282c3..6d945b8 100644 --- a/app/src/main/java/com/fankes/coloros/notify/utils/tool/IconAdaptationTool.kt +++ b/app/src/main/java/com/fankes/coloros/notify/utils/tool/IconAdaptationTool.kt @@ -29,11 +29,11 @@ import android.app.PendingIntent import android.content.ComponentName import android.content.Context import android.content.Intent -import android.graphics.Bitmap import android.graphics.drawable.Icon import android.os.Build import androidx.core.graphics.drawable.toBitmap import com.fankes.coloros.notify.BuildConfig +import com.fankes.coloros.notify.R import com.fankes.coloros.notify.hook.HookEntry import com.fankes.coloros.notify.utils.factory.* @@ -53,66 +53,6 @@ object IconAdaptationTool { /** 已过期的日期 */ private val outDateLimits = HashSet() - /** - * 使用的小图标 - * @return [Bitmap] - */ - private val smallIcon by lazy { - ("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAG\n" + - "x2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkP\n" + - "SJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG\n" + - "9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuZGF\n" + - "iYWNiYiwgMjAyMS8wNC8xNC0wMDozOTo0NCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6\n" + - "cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gP\n" + - "HJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYW\n" + - "RvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1\n" + - "lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90\n" + - "b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuM\n" + - "C9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cG\n" + - "UvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI\n" + - "yLjQgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDIyLTAzLTIzVDAyOjU1OjM2\n" + - "KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMi0wMy0yM1QwMzowMDoyMSswODowMCIge\n" + - "G1wOk1ldGFkYXRhRGF0ZT0iMjAyMi0wMy0yM1QwMzowMDoyMSswODowMCIgZGM6Zm9ybW\n" + - "F0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0N\n" + - "Qcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlp\n" + - "ZDpiZGY1YWY2NS1lYjYxLTRiOGUtOTk1NS01OTE5OThkN2ExNDAiIHhtcE1NOkRvY3VtZ\n" + - "W50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo2MDFlYjQ1OC01ZTdlLWFjNDYtODA0Mi\n" + - "1iNWJmYTFhYWQwNGMiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpjYTU\n" + - "4YTA1ZS04OTU1LTQyNzItODg2NC0xNmI5MWI0YzcxMmUiPiA8eG1wTU06SGlzdG9yeT4g\n" + - "PHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0Y\n" + - "W5jZUlEPSJ4bXAuaWlkOmNhNThhMDVlLTg5NTUtNDI3Mi04ODY0LTE2YjkxYjRjNzEyZS\n" + - "Igc3RFdnQ6d2hlbj0iMjAyMi0wMy0yM1QwMjo1NTozNiswODowMCIgc3RFdnQ6c29mdHd\n" + - "hcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjQgKE1hY2ludG9zaCkiLz4gPHJkZjps\n" + - "aSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjg5Y\n" + - "mIxNTI1LWVjYmMtNGY2NC1iZTRlLWU1N2EyNjQ1NDE1YyIgc3RFdnQ6d2hlbj0iMjAyMi\n" + - "0wMy0yM1QwMjo1NzoxMCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGh\n" + - "vdG9zaG9wIDIyLjQgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjps\n" + - "aSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmJkZ\n" + - "jVhZjY1LWViNjEtNGI4ZS05OTU1LTU5MTk5OGQ3YTE0MCIgc3RFdnQ6d2hlbj0iMjAyMi\n" + - "0wMy0yM1QwMzowMDoyMSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGh\n" + - "vdG9zaG9wIDIyLjQgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6\n" + - "U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+I\n" + - "DwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QdGsggAAA35JREFUaIHtmE2IVW\n" + - "Ucxn9z0Ukm7cMSo1AxUwjNIclLRVSL0CAoyD5oYwS1iogWGW0rwQpcJNjCRdKmTR+SBhF\n" + - "BWWZlZllmOgsT/EqHKRuqMVv8XJy5zPGd95x75hyh03Ae+C/O//2/z3Oee97P26MyGdD6\n" + - "r1/gQqExUjc0RuqGxkjd0BipGxojdcOkMTKlS/tCYBXQBvqBWcA/wI/AD8AW4NML9C79w\n" + - "APAYmAOcCUwCBwCvgTeB37J7K3Goq1utRgG1NUZPEXibnVnQa231CUxnhjxmoKkId5WWx\n" + - "M08XpJrSe7GXmlJHEH36l9oUgketRPKmqtS3P2OHaxWgO8HBl9vwPbgM+AU8B0YAnJ3Fk\n" + - "Uqd8HLAfO5MyHz4HbIvkh4ENgJ/Dn6DxZCdxFfGF6GngtPUeuz3D9qnpZzi/7mDoS6fe9\n" + - "Oi1SP0XdnqH1vDo9Q2eeujmj33WmhtbuSMFTOQbSsUg9Gem/3/HDbEuk7ox6c0GtZyP9d\n" + - "3WMLIg0vlGQuBPz1cEIzx51aqouxN/qsglqvRnhWYj6UpAcVnsnSN75/MciIntTfC+m8r\n" + - "+qi0vo9Kp/BBrrUD8KkutLkHdijvpbxMy3jn2Z1eoL6uUVdDYE/NtRjwfJ+yoIoF6rnoi\n" + - "Y2VORNx33B9wHWsDMYEk7m7NsFsEhYBlwMsjfCOwFplbkBzgdPPe2gOEg2e38VQQnSMwM\n" + - "BvmlwBfAtIr8FwXPIy1gf5BsVxS5ieTQd5zEzFDQvhzYBfRU0OgPnk/j+GPJYMlx26d+P\n" + - "MpxNjXX5hlfmneYbJBltAYCrk2YnCZDnHeOKRAXqz8FHMOp9mtMltsQu0uYeTzC085yqL\n" + - "qqIPFMdV+k/46gbr7xpflrz98086Kt/hv0P6JjR5RbIwKqz5h/NF/p+OVb9bA6O1I/N6P\n" + - "+Z/WWLiYezXjHO9JGMBlOMRxW16r3mhwn7jS5D2Rdho6ps3JeKGuYaXKnedhkL5qhLlWf\n" + - "UL/KqN/Y4Q1FNmd0KIqj6tU5JtJmjnThGu7S/k6aMyayvpSF5FfL+xJhXKF+U1JrU8iXJ\n" + - "bLC7M8Z4pTJXJrIypOO59ShgloH1YdiPOkbYgy3A48ANwBXAZcCIyQ79gDwAfAe8FeFzQ\n" + - "3gEuBB4B5gATAb6BvlPUpy63wX2JpF0M3I/waT5g+6xkjd0BipGxojdUNjpG5ojNQNjZG\n" + - "64Rx5J7QeMy++3AAAAABJRU5ErkJggg==").bitmap - } - /** * 推送新 APP 安装适配通知 * @param context 实例 @@ -134,7 +74,7 @@ object IconAdaptationTool { setContentText("尚未适配此应用,点按打开在线规则。") setColor(0xFF2993F0.toInt()) setAutoCancel(true) - setSmallIcon(Icon.createWithBitmap(smallIcon)) + setSmallIcon(Icon.createWithResource(BuildConfig.APPLICATION_ID, R.drawable.ic_unsupported)) setLargeIcon(context.appIconOf(packageName)?.toBitmap()) setContentIntent( PendingIntent.getActivity( diff --git a/app/src/main/res/drawable/ic_unsupported.xml b/app/src/main/res/drawable/ic_unsupported.xml new file mode 100644 index 0000000..2a19b51 --- /dev/null +++ b/app/src/main/res/drawable/ic_unsupported.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file