Skip to content

feat: 添加 HyperOS 4 通知图标的适配 - #257

Merged
fankes merged 3 commits into
fankes:masterfrom
zhang0281:feat/hyperos-4-support
Aug 15, 2026
Merged

fankes merged 3 commits into
fankes:masterfrom
zhang0281:feat/hyperos-4-support

Conversation

@zhang0281

@zhang0281 zhang0281 commented Aug 15, 2026 •

Copy link
Copy Markdown
Contributor

概述

适配 HyperOS 4 / Android 17 的 SystemUI API 变化,并修复原生通知样式下的通知面板图标变为单色、状态栏通知图标偶发显示为白块的问题。

主要变更

  • 将受支持的 HyperOS 版本扩展至 4.0。
  • 兼容 HyperOS 4 中缺失的 NotificationIconAreaController。
  • 兼容三参数 onDarkChanged。
  • 同时支持旧版 isExpanded(Boolean) 与新版 isExpanded$1()。
  • 支持通过 Entry、EntryAdapter、field 或 getter 获取通知数据。
  • Android 17 使用 NotificationListenerService.Ranking.channel 获取通知渠道优先级,避免 SystemUI 跨包读取 Channel 时触发 SecurityException。
  • HyperOS 4 使用原生/Google 通知样式且未开启强制着色时,保留 SystemUI 的彩色通知面板图标。
  • 在 HyperOS 4 的 StatusBarIconView.updateDrawable() 完成后重新应用适配图标,修复开机或收到新通知后状态栏图标显示为白块的问题。

测试环境

  • Device: Xiaomi 17 Pro Max (2509FPN0BC)
  • Codename: popsicle
  • HyperOS: OS4.0.0.20.XPBCNXM
  • Android: 17 / API 37
  • Root: KernelSU
  • Hook environment: LSPosed, scoped to com.android.systemui

Closes #256

@fankes

fankes commented Aug 15, 2026

Copy link
Copy Markdown
Owner

不需要提供单测,单测本地 codex 能过就行

@fankes

fankes commented Aug 15, 2026

Copy link
Copy Markdown
Owner

你可以让 codex 读取此线程,重新 review 并修改

- 恢复版本白名单的原有内联判断,仅保留 HyperOS 4.0 支持
- 按维护者意见移除仅用于本地验证的测试用例
@zhang0281

Copy link
Copy Markdown
Contributor Author

已按意见修改:移除了 PR 中新增的版本支持单元测试,并将仅为测试抽出的 helper 收回原有版本判断逻辑,仅保留 HyperOS 4.0 白名单变更。本地已通过 :app:testDebugUnitTest、:app:assembleDebug、:app:assembleRelease。

Comment thread app/src/main/java/com/fankes/miui/notify/utils/factory/FunctionFactory.kt Outdated
@fankes
fankes merged commit 201c8ae into fankes:master Aug 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

是否有适配os4的意向

2 participants