update 获取全部群成员;自动保存到通讯录;已知问题修复

This commit is contained in:
gallonyin
2023-03-07 17:50:23 +08:00
parent fac38bf57f
commit afaa70d18c
2 changed files with 43 additions and 13 deletions

View File

@@ -19,17 +19,10 @@ object WeworkGetImpl {
* @param selectList 群名列表 为空时去群管理页查询并返回群聊页 * @param selectList 群名列表 为空时去群管理页查询并返回群聊页
*/ */
fun getGroupInfo(message: WeworkMessageBean, selectList: List<String>): Boolean { fun getGroupInfo(message: WeworkMessageBean, selectList: List<String>): Boolean {
if (selectList.isNullOrEmpty()) { for (groupName in selectList) {
WeworkRoomUtil.intoGroupManager() if (WeworkRoomUtil.intoRoom(groupName) && WeworkRoomUtil.intoGroupManager()) {
val groupInfo = getGroupInfoDetail() val groupInfo = getGroupInfoDetail()
WeworkController.weworkService.webSocketManager.send(groupInfo) 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)
}
} }
} }
return true return true
@@ -141,7 +134,7 @@ object WeworkGetImpl {
/** /**
* 获取群名、群主、群成员数、群公告、群备注 * 获取群名、群主、群成员数、群公告、群备注
*/ */
fun getGroupInfoDetail(): WeworkMessageBean { fun getGroupInfoDetail(saveAddress: Boolean = true, saveMembers: Boolean = false): WeworkMessageBean {
val weworkMessageBean = WeworkMessageBean() val weworkMessageBean = WeworkMessageBean()
weworkMessageBean.type = WeworkMessageBean.GET_GROUP_INFO weworkMessageBean.type = WeworkMessageBean.GET_GROUP_INFO
val tvManagerFlag = AccessibilityUtil.findOneByText(getRoot(), "全部群成员", "微信用户创建", timeout = 2000) val tvManagerFlag = AccessibilityUtil.findOneByText(getRoot(), "全部群成员", "微信用户创建", timeout = 2000)
@@ -194,6 +187,43 @@ object WeworkGetImpl {
LogUtils.d("群备注: " + tvRemark.text) LogUtils.d("群备注: " + tvRemark.text)
weworkMessageBean.groupRemark = tvRemark.text.toString() 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<String>()
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() backPress()
return weworkMessageBean return weworkMessageBean
} }

View File

@@ -1040,7 +1040,7 @@ object AccessibilityUtil {
fun findBackNode(node: AccessibilityNodeInfo?, minChildCount: Int = 0): AccessibilityNodeInfo? { fun findBackNode(node: AccessibilityNodeInfo?, minChildCount: Int = 0): AccessibilityNodeInfo? {
var findBackNode = findBackNode(node) ?: return null var findBackNode = findBackNode(node) ?: return null
while (findBackNode.childCount < minChildCount) { while (findBackNode.childCount < minChildCount) {
findBackNode = findFrontNode(findBackNode) ?: return null findBackNode = findBackNode(findBackNode) ?: return null
} }
return findBackNode return findBackNode
} }