diff --git a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java index 3f4c1dd..e026255 100644 --- a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java +++ b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java @@ -44,6 +44,8 @@ public class WeworkMessageBean { * 合并转发 RELAY_MERGE_MESSAGE * 批量发送 SEND_MULTI_MESSAGE * 合并发送 SEND_MERGE_MESSAGE + * 扫一扫 SCAN_QR_CODE + * 删除联系人 DELETE_CONTACT *

* 非操作类型 300 * 机器人普通日志记录 ROBOT_LOG @@ -97,6 +99,7 @@ public class WeworkMessageBean { public static final int VOICE_CALL = 231; public static final int VIDEO_CALL = 232; public static final int SCAN_QR_CODE = 233; + public static final int DELETE_CONTACT = 234; public static final int ROBOT_LOG = 301; public static final int ROBOT_ERROR_LOG = 302; 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 e7abb7b..5426b67 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -193,6 +193,9 @@ object MyLooper { WeworkMessageBean.SCAN_QR_CODE -> { WeworkController.scanQrCode(message) } + WeworkMessageBean.DELETE_CONTACT -> { + WeworkController.deleteContact(message) + } WeworkMessageBean.DISMISS_GROUP -> { WeworkController.dismissGroup(message) } diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt index b1961f5..70b2a42 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt @@ -529,6 +529,17 @@ object WeworkController { ) } + /** + * 删除联系人 + * @see WeworkMessageBean.DELETE_CONTACT + * @param message#friend 待删除用户 + */ + @RequestMapping + fun deleteContact(message: WeworkMessageBean): Boolean { + LogUtils.d("deleteContact(): ${message.friend}") + return WeworkOperationImpl.deleteContact(message, message.friend) + } + /** * 获取群信息 * @see WeworkMessageBean.GET_GROUP_INFO 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 5eb4fe2..2596d53 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt @@ -1776,6 +1776,61 @@ object WeworkOperationImpl { } } + /** + * 删除联系人 + * @see WeworkMessageBean.DELETE_CONTACT + * @param friend 待删除用户 + */ + fun deleteContact(message: WeworkMessageBean, friend: WeworkMessageBean.Friend): Boolean { + val startTime = System.currentTimeMillis() + if (friend.phone == null && friend.name != null) { + if (getFriendInfo(friend.name) && AccessibilityExtraUtil.loadingPage("ContactDetailBaseContentActivity")) { + val imageView = AccessibilityUtil.findOneByClazz(getRoot(), Views.ImageView) + val frontNode = AccessibilityUtil.findFrontNode(imageView?.parent) + val textViewList = AccessibilityUtil.findAllOnceByClazz(frontNode, Views.TextView) + if (textViewList.size >= 2) { + val multiButton: AccessibilityNodeInfo = textViewList[textViewList.size - 1] + AccessibilityUtil.performClick(multiButton) + if (AccessibilityExtraUtil.loadingPage("ContactDetailSettingActivity")) { + val tvDelete = AccessibilityUtil.scrollAndFindByText(WeworkController.weworkService, getRoot(), "删除", exact = true) + if (tvDelete != null) { + AccessibilityUtil.performClick(tvDelete) + if (AccessibilityUtil.findTextAndClick(getRoot(), "确认删除", exact = true)) { + LogUtils.d("删除联系人成功: ${friend.name}") + uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime, listOf(friend.name), listOf()) + return true + } else { + LogUtils.e("未找到确认删除按钮: ${friend.name}") + uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到确认删除按钮: ${friend.name}", startTime, listOf(), listOf(friend.name)) + return false + } + } else { + LogUtils.e("未找到删除按钮: ${friend.name}") + uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到删除按钮: ${friend.name}", startTime, listOf(), listOf(friend.name)) + return false + } + } else { + LogUtils.e("进入个人信息详情页失败: ${friend.name}") + uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "进入个人信息详情页失败: ${friend.name}", startTime, listOf(), listOf(friend.name)) + return false + } + } else { + LogUtils.e("未找到更多按钮: ${friend.name}") + uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到更多按钮: ${friend.name}", startTime, listOf(), listOf(friend.name)) + return false + } + } else { + LogUtils.e("未找到用户: ${friend.name}") + uploadCommandResult(message, ExecCallbackBean.ERROR_TARGET, "未找到用户: ${friend.name}", startTime, listOf(), listOf(friend.name)) + return false + } + } else { + LogUtils.e("数据异常: ${friend.name}") + uploadCommandResult(message, ExecCallbackBean.ERROR_ILLEGAL_DATA, "数据异常: ${friend.name}", startTime, listOf(), listOf(friend.name)) + return false + } + } + /** * 展示群信息 * @see WeworkMessageBean.SHOW_GROUP_INFO @@ -2525,6 +2580,7 @@ object WeworkOperationImpl { timeout = 2000, root = false ) + var isSelect = false if (selectListView != null && matchSelect != null) { for (i in 0 until selectListView.childCount) { val item = selectListView.getChild(i) @@ -2534,12 +2590,14 @@ object WeworkOperationImpl { item.refresh() val imageView = AccessibilityUtil.findOneByClazz(item, Views.ImageView, root = false) - AccessibilityUtil.performClick(imageView) + AccessibilityUtil.clickByNode(WeworkController.weworkService, imageView) + LogUtils.d("选择联系人") + isSelect = true break } } } - if (matchSelect != null) { + if (isSelect) { LogUtils.d("找到搜索结果: $title") return true } else {