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 517951b..7d20431 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 @@ -194,6 +194,9 @@ object SystemUIHooker : YukiBaseHooker() { /** 状态栏原始通知图标最大个数限制 */ private var statusBarMaxStaticIcons = -1 + /** 模块上次设置的通知图标最大个数限制 */ + private var moduleLastSetStatusBarMaxStaticIcons = -1 + /** 是否已经使用过缓存刷新功能 */ private var isUsingCachingMethod = false @@ -664,11 +667,24 @@ object SystemUIHooker : YukiBaseHooker() { */ private fun hookStatusBarMaxStaticIcons(fieldName: String, instance: Any) { val maxStaticIconsField = NotificationIconContainerClass.field { name = fieldName }.get(instance) - if (statusBarMaxStaticIcons == -1) statusBarMaxStaticIcons = maxStaticIconsField.int() + if (statusBarMaxStaticIcons == -1 || + /** 系统设置内修改,模块同步更新 */ + moduleLastSetStatusBarMaxStaticIcons != maxStaticIconsField.int()) { + statusBarMaxStaticIcons = maxStaticIconsField.int() + } + if (!ConfigData.isEnableLiftedStatusIconCount) { + maxStaticIconsField.set(statusBarMaxStaticIcons) + return + } + /** 解除状态栏通知图标个数限制 */ - if (isShowNotificationIcons && ConfigData.isEnableLiftedStatusIconCount) - maxStaticIconsField.set(ConfigData.liftedStatusIconCount.let { if (it in 0..100) it else 5 }) - else maxStaticIconsField.set(if (isShowNotificationIcons) statusBarMaxStaticIcons else 0) + if (isShowNotificationIcons) { + moduleLastSetStatusBarMaxStaticIcons = ConfigData.liftedStatusIconCount.let { if (it in 0..100) it else 5 } + maxStaticIconsField.set(moduleLastSetStatusBarMaxStaticIcons) + } else { + maxStaticIconsField.set(0) + moduleLastSetStatusBarMaxStaticIcons = 0 + } } /** @@ -947,7 +963,11 @@ object SystemUIHooker : YukiBaseHooker() { }.hook().after { updateStatusBarIconsAlpha(instance()) } method { name = "resetViewStates" - }.hook().after { updateStatusBarIconsAlpha(instance()) } + }.hook().after { + updateStatusBarIconsAlpha(instance()) + /** HyperOS系统设置修改通知图标个数触发此方法 */ + hookStatusBarMaxStaticIcons("mMaxStaticIcons", instance) + } method { name { it == "calculateIconTranslations" || it == "calculateIconXTranslations" } }.hook().after {