From 28d60047778b9355ce3216c9d4c6f58c3d3d5b90 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Tue, 25 Oct 2022 16:59:24 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=89=B9=E6=AE=8A=E7=AC=A6=E5=8F=B7?= =?UTF-8?q?=E5=85=BC=E5=AE=B9;=E4=BF=AE=E5=A4=8D=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E5=A4=9A=E6=9D=A1=E6=B6=88=E6=81=AF=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worktool/model/ExecCallbackBean.kt | 28 +++++++++++++++++++ .../org/yameida/worktool/service/MyLooper.kt | 1 + .../worktool/service/WeworkOperationImpl.kt | 9 ++++-- .../org/yameida/worktool/utils/RegexHelper.kt | 23 +++++++++++++++ .../yameida/worktool/utils/WeworkRoomUtil.kt | 3 +- 5 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/org/yameida/worktool/utils/RegexHelper.kt diff --git a/app/src/main/java/org/yameida/worktool/model/ExecCallbackBean.kt b/app/src/main/java/org/yameida/worktool/model/ExecCallbackBean.kt index 2daaf09..4f09b92 100644 --- a/app/src/main/java/org/yameida/worktool/model/ExecCallbackBean.kt +++ b/app/src/main/java/org/yameida/worktool/model/ExecCallbackBean.kt @@ -72,4 +72,32 @@ data class ExecCallbackBean( const val ERROR_OTHER = 501000 } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + if (!super.equals(other)) return false + + other as ExecCallbackBean + + if (rawMsg != other.rawMsg) return false + if (errorCode != other.errorCode) return false + if (errorReason != other.errorReason) return false + if (runTime != other.runTime) return false + if (timeCost != other.timeCost) return false + + return true + } + + override fun hashCode(): Int { + var result = super.hashCode() + result = 31 * result + (rawMsg?.hashCode() ?: 0) + result = 31 * result + errorCode + result = 31 * result + errorReason.hashCode() + result = 31 * result + runTime.hashCode() + result = 31 * result + timeCost.hashCode() + return result + } + + } \ No newline at end of file diff --git a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt index 172861e..489d13b 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -82,6 +82,7 @@ object MyLooper { WeworkController.enableLoopRunning = true } else { WeworkController.mainLoopRunning = false + LogUtils.v("加入指令到执行队列", GsonUtils.toJson(message)) getInstance().sendMessage(Message.obtain().apply { what = message.type * message.hashCode() obj = message.apply { messageId = messageList.messageId } diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt index b42282c..7c879b1 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt @@ -733,7 +733,8 @@ object WeworkOperationImpl { AccessibilityUtil.findTextInput(getRoot(), trimTitle) sleep(Constant.CHANGE_PAGE_INTERVAL) val selectListView = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView, Views.RecyclerView, Views.ViewGroup, minChildCount = 2) - val regex = "^$trimTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$" + val reverseRegexTitle = RegexHelper.reverseRegexTitle(trimTitle) + val regex = "^$reverseRegexTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$" val matchSelect = AccessibilityUtil.findOneByTextRegex( selectListView, regex, @@ -882,7 +883,8 @@ object WeworkOperationImpl { AccessibilityUtil.findTextInput(getRoot(), trimTitle) sleep(Constant.POP_WINDOW_INTERVAL) val selectListView = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView, Views.RecyclerView, Views.ViewGroup, minChildCount = 2, firstChildClazz = Views.TextView) - val regex = "^$trimTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$" + val reverseRegexTitle = RegexHelper.reverseRegexTitle(trimTitle) + val regex = "^$reverseRegexTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$" val matchSelect = AccessibilityUtil.findOneByTextRegex( selectListView, regex, @@ -976,7 +978,8 @@ object WeworkOperationImpl { AccessibilityUtil.findTextInput(getRoot(), trimTitle) sleep(Constant.POP_WINDOW_INTERVAL) val selectListView = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView, Views.RecyclerView, Views.ViewGroup, minChildCount = 2, firstChildClazz = Views.RelativeLayout) - val regex = "^$trimTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$" + val reverseRegexTitle = RegexHelper.reverseRegexTitle(trimTitle) + val regex = "^$reverseRegexTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$" val matchSelect = AccessibilityUtil.findOneByTextRegex( selectListView, regex, diff --git a/app/src/main/java/org/yameida/worktool/utils/RegexHelper.kt b/app/src/main/java/org/yameida/worktool/utils/RegexHelper.kt new file mode 100644 index 0000000..cdeec4f --- /dev/null +++ b/app/src/main/java/org/yameida/worktool/utils/RegexHelper.kt @@ -0,0 +1,23 @@ +package org.yameida.worktool.utils + +object RegexHelper { + + fun reverseRegexTitle(string: String): String { + return string.replace("\\", "\\\\") + .replace("*", "\\*") + .replace("+", "\\+") + .replace(".", "\\.") + .replace("[", "\\[") + .replace("]", "\\]") + .replace("?", "\\?") + .replace("^", "\\^") + .replace("$", "\\$") + .replace("{", "\\{") + .replace("}", "\\}") + .replace("|", "\\|") +// .replace("-", "\\-") //企微自身限制 +// .replace("(", "\\(") //企微自身限制 +// .replace(")", "\\)") //企微自身限制 + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/yameida/worktool/utils/WeworkRoomUtil.kt b/app/src/main/java/org/yameida/worktool/utils/WeworkRoomUtil.kt index 681a8af..8a22edb 100644 --- a/app/src/main/java/org/yameida/worktool/utils/WeworkRoomUtil.kt +++ b/app/src/main/java/org/yameida/worktool/utils/WeworkRoomUtil.kt @@ -104,7 +104,8 @@ object WeworkRoomUtil { sleep(Constant.CHANGE_PAGE_INTERVAL) //消息页搜索结果列表 val selectListView = findOneByClazz(getRoot(), Views.ListView) - val regex = "^$trimTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$" + val reverseRegexTitle = RegexHelper.reverseRegexTitle(trimTitle) + val regex = "^$reverseRegexTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$" val searchResult = AccessibilityUtil.findOneByTextRegex( selectListView, regex,