From 8508ff9639402d0fde85958cee70fd2bac495555 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Wed, 11 Jan 2023 20:05:06 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=94=AF=E6=8C=81=E8=BD=AC=E5=8F=91?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=92=8C=E8=A7=86=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yameida/worktool/utils/WeworkTextUtil.kt | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt b/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt index 0a0fd2c..19ab38e 100644 --- a/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt +++ b/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt @@ -252,6 +252,30 @@ object WeworkTextUtil { } } + /** + * 企微消息类型 TEXT_TYPE + * @see WeworkMessageBean.TEXT_TYPE + */ + fun getTextTypeFromItem(node: AccessibilityNodeInfo?, isGroup: Boolean = true): Int { + if (node == null) return WeworkMessageBean.TEXT_TYPE_UNKNOWN + //消息主体 + val relativeLayoutItem = AccessibilityUtil.findOnceByClazz(node, Views.RelativeLayout, limitDepth = 1) + if (relativeLayoutItem != null && relativeLayoutItem.childCount >= 2) { + if (Views.ImageView.equals(relativeLayoutItem.getChild(0).className)) { + LogUtils.v("头像在左边 本条消息发送者为其他联系人") + var textType = WeworkMessageBean.TEXT_TYPE_UNKNOWN + val relativeLayoutContent = + AccessibilityUtil.findOnceByClazz(relativeLayoutItem, Views.RelativeLayout, limitDepth = 2) + if (relativeLayoutContent != null) { + textType = getTextType(relativeLayoutContent) + LogUtils.v("textType: $textType") + return textType + } + } + } + return WeworkMessageBean.TEXT_TYPE_UNKNOWN + } + /** * 是否为消息上方时间 */ @@ -317,7 +341,12 @@ object WeworkTextUtil { val backNode = getMessageListNode(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_CONTACT) if (backNode != null) { val textNode = AccessibilityUtil.findOnceByText(backNode, replyContent) - if (textNode != null) { + if (textNode != null && replyContent.isNotEmpty()) { + LogUtils.d("nameList: $nameList\nreplyContent: $replyContent") + return longClickMessageItem(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_CONTACT, key) + } else if ((replyTextType == WeworkMessageBean.TEXT_TYPE_IMAGE + || replyTextType == WeworkMessageBean.TEXT_TYPE_VIDEO) + && (replyTextType == getTextTypeFromItem(item))) { LogUtils.d("nameList: $nameList\nreplyContent: $replyContent") return longClickMessageItem(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_CONTACT, key) } @@ -328,7 +357,12 @@ object WeworkTextUtil { val backNode = getMessageListNode(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_GROUP) if (backNode != null) { val textNode = AccessibilityUtil.findOnceByText(backNode, replyContent) - if (textNode != null) { + if (textNode != null && replyContent.isNotEmpty()) { + LogUtils.d("nameList: $nameList\nreplyContent: $replyContent") + return longClickMessageItem(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_GROUP, key) + } else if ((replyTextType == WeworkMessageBean.TEXT_TYPE_IMAGE + || replyTextType == WeworkMessageBean.TEXT_TYPE_VIDEO) + && (replyTextType == getTextTypeFromItem(item))) { LogUtils.d("nameList: $nameList\nreplyContent: $replyContent") return longClickMessageItem(item, WeworkMessageBean.ROOM_TYPE_INTERNAL_GROUP, key) }