From 57cf264e44f39a5315bf2bfd23e7180dc4bd8620 Mon Sep 17 00:00:00 2001 From: tanjianbin <632190820@qq.com> Date: Mon, 11 May 2026 16:29:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1):=20=E4=BF=AE=E5=A4=8D=E6=9C=AA=E8=AF=BB?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E6=A3=80=E6=B5=8B=E4=B8=8E=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整变量命名以准确反映收集的是聊天行节点而非红点节点 新增两种点击方式的兜底逻辑,提升点击成功率 添加页面跳转验证,避免点击未生效的假成功情况 优化异常处理流程,点击失败时直接返回false --- .../worktool/service/WeworkLoopImpl.kt | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt index 84147d3..7756af8 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt @@ -636,7 +636,7 @@ object WeworkLoopImpl { * 检查首页-聊天列表是否有未读红点并点击进入 */ private fun checkUnreadChatRoom(list: AccessibilityNodeInfo): Boolean { - val spotNodeList = arrayListOf() + val unreadRowNodeList = arrayListOf() for (i in 0 until list.childCount) { val item = list.getChild(i) if (item != null && Views.RelativeLayout.equals(item.className)) { @@ -647,20 +647,22 @@ object WeworkLoopImpl { && spotNode.text != null && spotNode.text.toString().replace("+", "").isDigitsOnly() ) { - spotNodeList.add(spotNode) + unreadRowNodeList.add(item) } } } } - if (spotNodeList.size > 0) { - LogUtils.i("发现未读消息: " + spotNodeList.size + "条") - log("发现未读消息: " + spotNodeList.size + "条") - if (AccessibilityUtil.performClick(spotNodeList.firstOrNull())) { - //进入聊天页 下一步 getChatMessageList - } else { - AccessibilityUtil.clickByNode(WeworkController.weworkService, spotNodeList.firstOrNull()?.parent) + if (unreadRowNodeList.isNotEmpty()) { + LogUtils.i("发现未读消息: " + unreadRowNodeList.size + "条") + log("发现未读消息: " + unreadRowNodeList.size + "条") + val firstUnreadRow = unreadRowNodeList.firstOrNull() + val clicked = AccessibilityUtil.performClick(firstUnreadRow) + || AccessibilityUtil.clickByNode(WeworkController.weworkService, firstUnreadRow) + if (!clicked) { + return false } - return true + // 避免“点击红点但未实际进会话”的假成功 + return AccessibilityUtil.waitForPageMissing("WwMainActivity", "GlobalSearchActivity", timeout = 2000) } else { return false }