From be26c9aac58c941be8f7fc08861a19a46d52ea0b Mon Sep 17 00:00:00 2001 From: Song <168455@qq.com> Date: Wed, 8 Jul 2026 15:59:51 +0800 Subject: [PATCH] fix: blacklist call-status noise (telecom / AI-call) via bl v3 Incoming calls are already handled by PhoneCallMonitor (pkg=phone_call); com.android.server.telecom and com.xiaomi.aiasst.service emit redundant in-call status notices. Add them to default blacklist (bl_version 3), migrated into existing users' blacklist (add-only). Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 2 +- .../java/com/a2i/forwarder/store/AppRulesStore.kt | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 9c3e94f..8a0448d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -86,7 +86,7 @@ NotifyListenerService (系统通知入口) | `core/SmsFallbackForwarder.kt` | 断网时把紧要通知(验证码/来电)用短信发到 iPhone,5 分钟限频 + 余额检查。 | | `core/UpdateChecker.kt` | 查 GitHub Releases 最新版(24h 节流)→ 语义比较 → 下载 APK → FileProvider 调起系统安装器。 | | `store/SettingsStore.kt` | Bark 服务器列表、全局开关、广告关键词等。`MutableStateFlow` + DataStore。 | -| `store/AppRulesStore.kt` | 黑/白名单模式 + 默认黑名单(系统 App + 输入法 + 三星剪贴板/键盘 + GMS + 录音机/相册/查找/密码管理);默认黑名单带版本号 `bl_version`,升级时把新增噪音包合并进老用户黑名单(只增不删)。 | +| `store/AppRulesStore.kt` | 黑/白名单模式 + 默认黑名单(系统 App + 输入法 + 三星剪贴板/键盘 + GMS + 录音机/相册/查找/密码管理 + 通话管理/AI通话);默认黑名单带版本号 `bl_version`,升级时把新增噪音包合并进老用户黑名单(只增不删)。 | | `ui/nav/AppNav.kt` | 4 个底部 Tab + 日志页。 | | `ui/theme/*` | 固定品牌配色(`Color.kt`)、自定义 `Typography`(`Type.kt`),`A2iTheme` 关闭动态取色、统一深浅色方案(`Theme.kt`)。 | | `ui/screens/*.kt` | HomeScreen(品牌横幅 + 运行状态 + 统计 + 更新横幅 + 短信挂起提醒)、AppManageScreen、FilterScreen、SettingsScreen(Bark 服务 / 应用图标 / 断网短信兜底 / 关于与更新)、LogScreen、UpdateDialog(应用内更新弹窗)。 | diff --git a/app/src/main/java/com/a2i/forwarder/store/AppRulesStore.kt b/app/src/main/java/com/a2i/forwarder/store/AppRulesStore.kt index 748c63a..24da5db 100644 --- a/app/src/main/java/com/a2i/forwarder/store/AppRulesStore.kt +++ b/app/src/main/java/com/a2i/forwarder/store/AppRulesStore.kt @@ -41,7 +41,7 @@ class AppRulesStore( val ver = p[K.BL_VERSION] ?: 1 var black = p[K.BLACK] ?: defaultBlacklist if (ver < DEFAULT_BL_VERSION) { - black = black + blAddedV2 + black = black + blAdded ds.edit { it[K.BLACK] = black; it[K.BL_VERSION] = DEFAULT_BL_VERSION } } blacklist.value = black @@ -78,14 +78,18 @@ class AppRulesStore( } companion object { - private const val DEFAULT_BL_VERSION = 2 + private const val DEFAULT_BL_VERSION = 3 - // 版本 2 新增的噪音包(用于老用户迁移,只补不删) - private val blAddedV2 = setOf( + // 默认黑名单增量(累积,用于老用户版本迁移,只补不删) + private val blAdded = setOf( + // v2 "com.android.soundrecorder", // 录音机 "com.google.android.apps.photos", // 相册 "com.xiaomi.finddevice", // 查找手机 "com.miui.passwords", // 密码管理 + // v3:通话过程中的系统状态通知,会与来电(PhoneCallMonitor)重复 + "com.android.server.telecom", // 通话管理 + "com.xiaomi.aiasst.service", // AI通话 ) val defaultBlacklist = setOf( @@ -115,6 +119,9 @@ class AppRulesStore( "com.google.android.apps.photos", // 相册 "com.xiaomi.finddevice", // 查找手机 "com.miui.passwords", // 密码管理 + // [v3] 通话状态噪音:来电由 PhoneCallMonitor 独立处理,这两个会重复 + "com.android.server.telecom", // 通话管理 + "com.xiaomi.aiasst.service", // AI通话 ) } }