fix: The refreshNotificationIcons does not work on ColorOS 16 (#89)

* fix: The refreshNotificationIcons does not work on ColorOS 16

* optimize field position

Removed duplicate declaration of ViewConfigCoordinatorClass.
This commit is contained in:
Timeline
2026-03-25 16:10:52 +08:00
committed by GitHub
parent d2299c4978
commit 3cfbae8801

View File

@@ -116,6 +116,9 @@ object SystemUIHooker : YukiBaseHooker() {
/** 原生存在的类 */
private val MediaDataClass by lazyClassOrNull("${PackageName.SYSTEMUI}.media.MediaData")
/** 原生存在的类 */
private val ViewConfigCoordinatorClass by lazyClassOrNull("${PackageName.SYSTEMUI}.statusbar.notification.collection.coordinator.ViewConfigCoordinator")
/** 原生存在的类 - 旧版本不存在 */
private val LegacyNotificationIconAreaControllerImpl by lazyClassOrNull("${PackageName.SYSTEMUI}.statusbar.phone.LegacyNotificationIconAreaControllerImpl")
@@ -294,6 +297,13 @@ object SystemUIHooker : YukiBaseHooker() {
parameterCount = 1
} != null
private val isNotificationPresenter
get() = StatusBarNotificationPresenterClass.resolve().optional(silent = true)
.firstMethodOrNull {
name = "updateNotificationsOnDensityOrFontScaleChanged"
emptyParameters()
} != null
/**
* 打印日志
* @param tag 标识
@@ -785,7 +795,10 @@ object SystemUIHooker : YukiBaseHooker() {
if (args().first().any() != null) instance<ImageView>().also { registerWallpaperColorChanged(it) }
}
/** 注入通知控制器实例 */
StatusBarNotificationPresenterClass.resolve().optional().constructor {}.hookAll().after { notificationPresenter = instance }
if (isNotificationPresenter)
StatusBarNotificationPresenterClass.resolve().optional().constructor {}.hookAll().after { notificationPresenter = instance }
else
ViewConfigCoordinatorClass?.resolve()?.optional()?.constructor {}?.hookAll()?.after { notificationPresenter = instance }
/** 替换通知面板背景 - 新版本 */
if (!isOldNotificationBackground)
OplusNotificationBackgroundViewClass?.resolve()?.optional()?.apply {