From 9c7ddb6259eba8413d12cdf1e806975733ecc3e0 Mon Sep 17 00:00:00 2001 From: huajiqaq Date: Sat, 21 Feb 2026 20:45:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20API/=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E5=8F=B3=E9=94=AE=E8=8F=9C=E5=8D=95=E5=A2=9E=E5=BC=BA=20?= =?UTF-8?q?=E5=9C=A8=E9=AB=98=E7=89=88=E6=9C=AC=E5=BE=AE=E4=BF=A1=E4=B8=8D?= =?UTF-8?q?=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wekit/hooks/item/chat/msg/AntiFoldMsg.kt | 8 ++++---- .../hooks/item/func/WeAvatarTransparent.kt | 1 + .../hooks/sdk/ui/WeChatChatContextMenuApi.kt | 17 +++++++++++++++-- .../ui/creator/dialog/ScriptManagerDialog.kt | 9 ++++++--- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/moe/ouom/wekit/hooks/item/chat/msg/AntiFoldMsg.kt b/app/src/main/java/moe/ouom/wekit/hooks/item/chat/msg/AntiFoldMsg.kt index 5319dcf..eca97cc 100644 --- a/app/src/main/java/moe/ouom/wekit/hooks/item/chat/msg/AntiFoldMsg.kt +++ b/app/src/main/java/moe/ouom/wekit/hooks/item/chat/msg/AntiFoldMsg.kt @@ -21,10 +21,10 @@ class AntiFoldMsg : BaseSwitchFunctionHookItem(), IDexFind { matcher { usingStrings(".msgsource.sec_msg_node.clip-len") paramTypes( - Int::class.java, - CharSequence::class.java, - null, - Boolean::class.javaPrimitiveType, + "int", + "java.lang.CharSequence", + "com.tencent.mm.ui.widget.MMNeat7extView", + "boolean", null, null ) diff --git a/app/src/main/java/moe/ouom/wekit/hooks/item/func/WeAvatarTransparent.kt b/app/src/main/java/moe/ouom/wekit/hooks/item/func/WeAvatarTransparent.kt index 8f10762..b16b850 100644 --- a/app/src/main/java/moe/ouom/wekit/hooks/item/func/WeAvatarTransparent.kt +++ b/app/src/main/java/moe/ouom/wekit/hooks/item/func/WeAvatarTransparent.kt @@ -17,6 +17,7 @@ class AvatarTransparent : BaseSwitchFunctionHookItem(), IDexFind { val descriptors = mutableMapOf() methodSaveBitmap.find(dexKit, descriptors = descriptors) { + searchPackages("com.tencent.mm.sdk.platformtools") matcher { usingStrings("saveBitmapToImage pathName null or nil", "MicroMsg.BitmapUtil") } diff --git a/app/src/main/java/moe/ouom/wekit/hooks/sdk/ui/WeChatChatContextMenuApi.kt b/app/src/main/java/moe/ouom/wekit/hooks/sdk/ui/WeChatChatContextMenuApi.kt index 3f3b847..6401983 100644 --- a/app/src/main/java/moe/ouom/wekit/hooks/sdk/ui/WeChatChatContextMenuApi.kt +++ b/app/src/main/java/moe/ouom/wekit/hooks/sdk/ui/WeChatChatContextMenuApi.kt @@ -12,6 +12,7 @@ import moe.ouom.wekit.hooks.core.annotation.HookItem import moe.ouom.wekit.util.log.WeLogger import org.luckypray.dexkit.DexKitBridge import org.luckypray.dexkit.query.enums.StringMatchType +import java.lang.reflect.Modifier import java.util.concurrent.CopyOnWriteArrayList @HookItem(path = "API/聊天右键菜单增强") @@ -99,8 +100,20 @@ class WeChatChatContextMenuApi : ApiHookItem(), IDexFind { // 可能会变更 val messageTagClass = item::class.java.superclass val messageHolderClass = messageTagClass.superclass - val messageField = messageHolderClass.getField("a") - val messageObject = messageField.get(item) + var messageObject: Any? + // 新版使用方法获取 不存在父类 + if (messageHolderClass === Any::class.java) { + messageObject = messageTagClass.methods.find { method -> + Modifier.isPublic(method.modifiers) && + !Modifier.isStatic(method.modifiers) && + method.returnType.`package`?.name?.startsWith("com.tencent.mm.storage") == true && + method.parameterCount == 0 + }!!.invoke(item) + // 部分旧版通过获取字段实现 (可能在部分旧版本不可以 因为模块最低版本为8.0.67 所以不想兼容了) + } else { + val messageField = messageHolderClass.getField("a") + messageObject = messageField.get(item) + } val messageImplClass = messageObject::class.java val messageWrapperClass = messageImplClass.superclass val databaseMappingClass = messageWrapperClass.superclass diff --git a/app/src/main/java/moe/ouom/wekit/ui/creator/dialog/ScriptManagerDialog.kt b/app/src/main/java/moe/ouom/wekit/ui/creator/dialog/ScriptManagerDialog.kt index e17e5cf..abfe799 100644 --- a/app/src/main/java/moe/ouom/wekit/ui/creator/dialog/ScriptManagerDialog.kt +++ b/app/src/main/java/moe/ouom/wekit/ui/creator/dialog/ScriptManagerDialog.kt @@ -279,7 +279,7 @@ class ScriptManagerDialog( // 设置现有值 etName.text = script.name - etDesc.text = script.description ?: "" + etDesc.text = script.description etContent.text = script.content MaterialDialog(wrappedContext) @@ -462,8 +462,10 @@ class ScriptManagerDialog( existingScript.description = newDescription existingScript.modifiedTime = System.currentTimeMillis() + existingScript.enabled = false + scriptManager.saveScript(existingScript) - showToast(context, "已覆盖相同ID的脚本") + showToast(context, "已覆盖相同ID的脚本 请手动启用导入脚本") contentContainer.removeAllViews() renderScriptList() @@ -475,6 +477,7 @@ class ScriptManagerDialog( name = newName, content = newContent, description = newDescription, + enabled = false, order = scripts.size ) @@ -483,7 +486,7 @@ class ScriptManagerDialog( contentContainer.removeAllViews() renderScriptList() - showToast(context, "已从剪贴板导入脚本") + showToast(context, "已从剪贴板导入脚本 请手动启用导入脚本") } else { showToast(context, "剪贴板内容格式不正确,缺少必要字段(name, id, description, content)") }