From afaa70d18c3149ae4330bb20641075ab147b2037 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Tue, 7 Mar 2023 17:50:23 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=8E=B7=E5=8F=96=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E7=BE=A4=E6=88=90=E5=91=98;=E8=87=AA=E5=8A=A8=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=88=B0=E9=80=9A=E8=AE=AF=E5=BD=95;=E5=B7=B2?= =?UTF-8?q?=E7=9F=A5=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yameida/worktool/service/WeworkGetImpl.kt | 54 ++++++++++++++----- .../worktool/utils/AccessibilityUtil.kt | 2 +- 2 files changed, 43 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt index cd3ba01..ac8dde4 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt @@ -19,17 +19,10 @@ object WeworkGetImpl { * @param selectList 群名列表 为空时去群管理页查询并返回群聊页 */ fun getGroupInfo(message: WeworkMessageBean, selectList: List): Boolean { - if (selectList.isNullOrEmpty()) { - WeworkRoomUtil.intoGroupManager() - val groupInfo = getGroupInfoDetail() - WeworkController.weworkService.webSocketManager.send(groupInfo) - backPress() - } else { - for (groupName in selectList) { - if (WeworkRoomUtil.intoRoom(groupName) && WeworkRoomUtil.intoGroupManager()) { - val groupInfo = getGroupInfoDetail() - WeworkController.weworkService.webSocketManager.send(groupInfo) - } + for (groupName in selectList) { + if (WeworkRoomUtil.intoRoom(groupName) && WeworkRoomUtil.intoGroupManager()) { + val groupInfo = getGroupInfoDetail() + WeworkController.weworkService.webSocketManager.send(groupInfo) } } return true @@ -141,7 +134,7 @@ object WeworkGetImpl { /** * 获取群名、群主、群成员数、群公告、群备注 */ - fun getGroupInfoDetail(): WeworkMessageBean { + fun getGroupInfoDetail(saveAddress: Boolean = true, saveMembers: Boolean = false): WeworkMessageBean { val weworkMessageBean = WeworkMessageBean() weworkMessageBean.type = WeworkMessageBean.GET_GROUP_INFO val tvManagerFlag = AccessibilityUtil.findOneByText(getRoot(), "全部群成员", "微信用户创建", timeout = 2000) @@ -194,6 +187,43 @@ object WeworkGetImpl { LogUtils.d("群备注: " + tvRemark.text) weworkMessageBean.groupRemark = tvRemark.text.toString() } + if (saveMembers) { + if (AccessibilityUtil.findTextAndClick(getRoot(), "查看全部群成员", exact = true, timeout = 0)) { + val userList = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView) + if (userList != null) { + val set = linkedSetOf() + val onScrollListener = object : AccessibilityUtil.OnScrollListener() { + override fun onScroll(): Boolean { + userList.refresh() + for (i in 0 until userList.childCount) { + val item = userList.getChild(i) + val name = AccessibilityUtil.findOnceByClazz(item, Views.TextView)?.text?.toString() + ?: continue + set.add(name) + } + return false + } + } + //滚动前先获取一次 + onScrollListener.onScroll() + AccessibilityUtil.scrollToBottom(WeworkController.weworkService, getRoot(), listener = onScrollListener, maxRetry = 100) + LogUtils.d("群成员: ${set.joinToString()}") + weworkMessageBean.nameList = set.toList() + } else { + LogUtils.e("未找到群成员列表") + } + backPress() + } + } + if (saveAddress) { + val tvAddressFlag = AccessibilityUtil.scrollAndFindByText(WeworkController.weworkService, getRoot(), "保存到通讯录") + val tvAddress = AccessibilityUtil.findBackNode(tvAddressFlag, minChildCount = 1) + val addressDesc = AccessibilityUtil.findOnceByDesc(tvAddress, "false", "true", exact = true) + if (addressDesc?.contentDescription == "false") { + LogUtils.d("未保存到通讯录 进行保存...") + AccessibilityUtil.performClick(addressDesc) + } + } backPress() return weworkMessageBean } diff --git a/app/src/main/java/org/yameida/worktool/utils/AccessibilityUtil.kt b/app/src/main/java/org/yameida/worktool/utils/AccessibilityUtil.kt index b1970ff..6c02bf4 100644 --- a/app/src/main/java/org/yameida/worktool/utils/AccessibilityUtil.kt +++ b/app/src/main/java/org/yameida/worktool/utils/AccessibilityUtil.kt @@ -1040,7 +1040,7 @@ object AccessibilityUtil { fun findBackNode(node: AccessibilityNodeInfo?, minChildCount: Int = 0): AccessibilityNodeInfo? { var findBackNode = findBackNode(node) ?: return null while (findBackNode.childCount < minChildCount) { - findBackNode = findFrontNode(findBackNode) ?: return null + findBackNode = findBackNode(findBackNode) ?: return null } return findBackNode }