From 741157336cc26c7ed42b5bb3fbe65f2236242776 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Thu, 2 Feb 2023 21:39:55 +0800 Subject: [PATCH] Modify make status icon count function open/close dynamic update in SystemUIHooker, MainActivity --- .../fankes/miui/notify/hook/entity/SystemUIHooker.kt | 10 +++++++--- .../com/fankes/miui/notify/ui/activity/MainActivity.kt | 2 +- 2 files changed, 8 insertions(+), 4 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 c931337..8bcf55e 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 @@ -148,6 +148,9 @@ object SystemUIHooker : YukiBaseHooker() { /** 是否显示通知图标 - 跟随 Hook 保存 */ private var isShowNotificationIcons = true + /** 状态栏原始通知图标最大个数限制 */ + private var statusBarMaxStaticIcons = -1 + /** 是否已经使用过缓存刷新功能 */ private var isUsingCachingMethod = false @@ -857,11 +860,12 @@ object SystemUIHooker : YukiBaseHooker() { injectMember { method { name = "updateState" } beforeHook { + val maxStaticIconsField = field { name = "MAX_STATIC_ICONS" }.get(instance) + if (statusBarMaxStaticIcons == -1) statusBarMaxStaticIcons = maxStaticIconsField.int() /** 解除状态栏通知图标个数限制 */ if (isShowNotificationIcons && prefs.get(DataConst.ENABLE_HOOK_STATUS_ICON_COUNT)) - field { name = "MAX_STATIC_ICONS" } - .get(instance).set(prefs.get(DataConst.HOOK_STATUS_ICON_COUNT) - .let { if (it in 0..100) it else 5 }) + maxStaticIconsField.set(prefs.get(DataConst.HOOK_STATUS_ICON_COUNT).let { if (it in 0..100) it else 5 }) + else maxStaticIconsField.set(statusBarMaxStaticIcons) } }.by { NotificationIconContainerClass.toClassOrNull()?.hasField { name = "MAX_STATIC_ICONS" } ?: false } /** 旧版方法 - 新版不存在 */ diff --git a/app/src/main/java/com/fankes/miui/notify/ui/activity/MainActivity.kt b/app/src/main/java/com/fankes/miui/notify/ui/activity/MainActivity.kt index 19e9407..4dc7f34 100644 --- a/app/src/main/java/com/fankes/miui/notify/ui/activity/MainActivity.kt +++ b/app/src/main/java/com/fankes/miui/notify/ui/activity/MainActivity.kt @@ -201,7 +201,7 @@ class MainActivity : BaseActivity() { if (btn.isPressed.not()) return@setOnCheckedChangeListener modulePrefs.put(DataConst.ENABLE_HOOK_STATUS_ICON_COUNT, b) binding.statusIconCountChildItem.isVisible = b - SystemUITool.showNeedRestartSnake(context = this) + SystemUITool.refreshSystemUI(context = this) { snake(msg = "设置将在新通知推送或状态栏刷新后自动生效") } } binding.colorIconCompatSwitch.setOnCheckedChangeListener { btn, b -> if (btn.isPressed.not()) return@setOnCheckedChangeListener