From d91d2736e687d7d4612b36c9e9f455c8077fd7ec Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Mon, 4 Apr 2022 13:38:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E6=A0=87=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E8=BF=87=E5=A4=A7=E9=80=A0=E6=88=90=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=81=9C=E6=AD=A2=E8=BF=90=E8=A1=8C=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miui/notify/hook/entity/SystemUIHooker.kt | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/fankes/miui/notify/hook/entity/SystemUIHooker.kt b/app/src/main/java/com/fankes/miui/notify/hook/entity/SystemUIHooker.kt index 304949c..dec6000 100644 --- a/app/src/main/java/com/fankes/miui/notify/hook/entity/SystemUIHooker.kt +++ b/app/src/main/java/com/fankes/miui/notify/hook/entity/SystemUIHooker.kt @@ -36,11 +36,13 @@ import android.graphics.drawable.Drawable import android.graphics.drawable.Icon import android.os.Build import android.service.notification.StatusBarNotification +import android.util.ArraySet import android.view.View import android.view.ViewGroup import android.view.ViewOutlineProvider import android.widget.ImageView import androidx.core.graphics.drawable.toBitmap +import androidx.core.view.children import com.fankes.miui.notify.bean.IconDataBean import com.fankes.miui.notify.const.Const import com.fankes.miui.notify.data.DataConst @@ -148,17 +150,17 @@ class SystemUIHooker : YukiBaseHooker() { /** 是否已经使用过缓存刷新功能 */ private var isUsingCachingMethod = false - /** 缓存的状态栏小图标实例 */ - private var statusBarIconViews = HashSet() + /** 状态栏通知图标容器 */ + private var notificationIconContainer: ViewGroup? = null /** 缓存的通知小图标包装纸实例 */ - private var notificationViewWrappers = HashSet() + private var notificationViewWrappers = ArraySet() /** MIUI 样式下的缓存的通知小图标包装纸实例 */ - private var miuiNotificationViewWrappers = HashSet() + private var miuiNotificationViewWrappers = ArraySet() /** MIUI 样式下的缓存的通知小图标折叠通知实例 */ - private var miuiNotificationChildrenContainers = HashSet() + private var miuiNotificationChildrenContainers = ArraySet() /** 仅监听一次主题壁纸颜色变化 */ private var isWallpaperColorListenerSetUp = false @@ -385,12 +387,12 @@ class SystemUIHooker : YukiBaseHooker() { /** 刷新状态栏小图标 */ private fun refreshStatusBarIcons() = runInSafe { StatusBarIconViewClass.clazz.field { name = "mNotification" }.also { result -> - statusBarIconViews.takeIf { it.isNotEmpty() }?.forEach { + notificationIconContainer?.children?.forEach { /** 得到通知实例 */ val nf = result.get(it).cast() ?: return /** 刷新状态栏图标 */ compatStatusIcon(it.context, nf, nf.notification.smallIcon.loadDrawable(it.context)).also { pair -> - pair.first.let { e -> it.setImageDrawable(e) } + pair.first.let { e -> (it as? ImageView?)?.setImageDrawable(e) } } } } @@ -766,8 +768,6 @@ class SystemUIHooker : YukiBaseHooker() { registerWallpaperColorChanged(it) /** 注册广播 */ registerReceiver(it.context) - /** 缓存实例 */ - statusBarIconViews.add(it) } } } @@ -777,6 +777,8 @@ class SystemUIHooker : YukiBaseHooker() { injectMember { method { name = "calculateIconTranslations" } afterHook { + /** 缓存实例 */ + notificationIconContainer = instance() /** 修复部分开发版状态栏图标只能显示一个的问题 */ when (miuiIncrementalVersion.lowercase()) { "22.3.14", "22.3.15", "22.3.16", "v13.0.1.1.16.dev", "22.3.18" ->