From 359dbcde915c3a07e3d8eaf82d5ee4b445bc9ce4 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Fri, 5 May 2023 21:14:03 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E7=BE=A4=E8=81=8A;settings=E9=A1=B5=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yameida/worktool/service/GlobalMethod.kt | 2 +- .../yameida/worktool/service/WeworkLoopImpl.kt | 17 ++++++++++------- .../worktool/service/WeworkOperationImpl.kt | 3 +-- .../yameida/worktool/service/WeworkService.kt | 1 + .../worktool/utils/WebSocketManager.java | 2 +- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/service/GlobalMethod.kt b/app/src/main/java/org/yameida/worktool/service/GlobalMethod.kt index ec0584d..fd2d506 100644 --- a/app/src/main/java/org/yameida/worktool/service/GlobalMethod.kt +++ b/app/src/main/java/org/yameida/worktool/service/GlobalMethod.kt @@ -126,7 +126,7 @@ fun getRoot(ignoreCheck: Boolean): AccessibilityNodeInfo { WeworkController.weworkService.currentPackage = root.packageName?.toString() ?: "" if (System.currentTimeMillis() % 30 == 0L) { error("当前不在企业微信: ${root.packageName}") - if (!root.packageName.contains("(worktool)|(settings)".toRegex())) { + if (!root.packageName.contains("worktool")) { if (!FloatWindowHelper.isPause) { ToastUtils.show("当前不在企业微信: ${root.packageName}\n尝试跳转到企业微信") Utils.getApp().packageManager.getLaunchIntentForPackage(Constant.PACKAGE_NAMES) 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 7a97a2b..42457bc 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt @@ -183,7 +183,7 @@ object WeworkLoopImpl { for (i in 0 until list.childCount) { val item = list.getChild(childCount - 1 - i) if (item != null && item.childCount > 0) { - messageList.add(parseChatMessageItem(item, titleList, roomType, false)) + messageList.add(parseChatMessageItem(item, titleList, roomType)) } } } @@ -198,7 +198,7 @@ object WeworkLoopImpl { for (i in 0 until childCount) { val item = list2.getChild(childCount - 1 - i) if (item != null && item.childCount > 0) { - val chatMessageItem = parseChatMessageItem(item, titleList, roomType, imageCheck) + val chatMessageItem = parseChatMessageItem(item, titleList, roomType, imageCheck, lastParse = true) if (chatMessageItem.imageRepeat == true) { chatMessageItem.imageRepeat = null imageCheck = false @@ -215,7 +215,7 @@ object WeworkLoopImpl { for (i in 0 until list2.childCount) { val item = list2.getChild(childCount - 1 - i) if (item != null && item.childCount > 0) { - val chatMessageItem = parseChatMessageItem(item, titleList, roomType, imageCheck) + val chatMessageItem = parseChatMessageItem(item, titleList, roomType, imageCheck, lastParse = true) if (chatMessageItem.sender == 0 && chatMessageItem.textType == WeworkMessageBean.TEXT_TYPE_IMAGE) { imageCheck = false } @@ -627,7 +627,8 @@ object WeworkLoopImpl { node: AccessibilityNodeInfo, titleList: ArrayList, roomType: Int, - imageCheck: Boolean + imageCheck: Boolean = false, + lastParse: Boolean = false ): WeworkMessageBean.SubMessageBean { val message: WeworkMessageBean.SubMessageBean val nameList = arrayListOf() @@ -671,14 +672,14 @@ object WeworkLoopImpl { } if (textType == WeworkMessageBean.TEXT_TYPE_LINK) { val tempList = itemMessageList.filter { it.feature != 0 } - if (tempList.size == 2 && tempList[0].text.contains("邀请你加入群聊") + if (lastParse && tempList.size == 2 && tempList[0].text.contains("邀请你加入群聊") && SPUtils.getInstance("groupInvite").getInt(tempList[1].text, 0) == 0) { LogUtils.d("邀请你加入群聊: ${tempList[1].text}") AccessibilityUtil.performClickWithSon(relativeLayoutContent) if (AccessibilityExtraUtil.loadingPage("JsWebActivity")) { - val tvButton = AccessibilityUtil.findOneByText(getRoot(), "我知道了", "加入群聊", "你已接受过此邀请,无法再次加入", exact = true) + val tvButton = AccessibilityUtil.findOneByText(getRoot(), "我知道了", "加入群聊", "你已接受过此邀请,无法再次加入", "你已接受邀请", exact = true) val text = tvButton?.text?.toString() - if (text == "我知道了" || text == "你已接受过此邀请,无法再次加入") { + if (text == "我知道了" || text?.startsWith("你已接受") == true) { backPress() SPUtils.getInstance("groupInvite").put(tempList[1].text, 1) error("加入群聊失败: ${tempList[1].text}") @@ -687,9 +688,11 @@ object WeworkLoopImpl { SPUtils.getInstance("groupInvite").put(tempList[1].text, 1) LogUtils.d("加入群聊: ${tempList[1].text}") log("加入群聊: ${tempList[1].text}") + //该房间的信息读取任务会被强制中断并跳转到新房间且返回无效 } else { LogUtils.e("加入群聊异常: ${tempList[1].text}") error("加入群聊异常: ${tempList[1].text}") + backPress() } } } 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 b04c869..e161626 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt @@ -972,8 +972,7 @@ object WeworkOperationImpl { val parseChatMessageItem = WeworkLoopImpl.parseChatMessageItem( item, titleList, - WeworkMessageBean.ROOM_TYPE_EXTERNAL_GROUP, - false + WeworkMessageBean.ROOM_TYPE_EXTERNAL_GROUP ) if (parseChatMessageItem.itemMessageList.find { it.feature == 2 && it.text?.toString() == startTime.toString() } != null) { start = true diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkService.kt b/app/src/main/java/org/yameida/worktool/service/WeworkService.kt index d0ee6a5..5f788f0 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkService.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkService.kt @@ -96,6 +96,7 @@ class WeworkService : AccessibilityService() { currentPackage = event.packageName?.toString() ?: "" val className = event.className?.toString() ?: "" if (className.contains(currentPackage)) { + LogUtils.d("更新当前页面: currentPackage: ${event.packageName} className: ${event.className}") currentClass = className } } diff --git a/app/src/main/java/org/yameida/worktool/utils/WebSocketManager.java b/app/src/main/java/org/yameida/worktool/utils/WebSocketManager.java index 38ffa97..2d05a9f 100644 --- a/app/src/main/java/org/yameida/worktool/utils/WebSocketManager.java +++ b/app/src/main/java/org/yameida/worktool/utils/WebSocketManager.java @@ -31,7 +31,7 @@ public class WebSocketManager { private static final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); public static Map webSocketManager = new ConcurrentHashMap<>(); private static final int reconnectInt = 5000; //毫秒 - private static final long heartBeatRate = 10; //秒 + private static final long heartBeatRate = 5; //秒 private Map messageIdMap = new ConcurrentHashMap<>(); private ScheduledFuture task; private WebSocket socket;