From d60a5288942f5164b45439764d405098703bbed9 Mon Sep 17 00:00:00 2001 From: klxiaoniu Date: Tue, 11 Jul 2023 22:55:13 +0800 Subject: [PATCH] fix: createItemNt failure --- app/src/main/java/cc/hicore/hook/RepeaterPlus.java | 6 ++++-- app/src/main/java/cc/ioctl/hook/msg/CopyCardMsg.kt | 3 ++- app/src/main/java/cc/ioctl/hook/msg/PicMd5Hook.java | 3 +++ app/src/main/java/cc/ioctl/hook/msg/PttForwardHook.java | 3 ++- app/src/main/java/io/github/qauxv/util/CustomMenu.kt | 5 ++++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/cc/hicore/hook/RepeaterPlus.java b/app/src/main/java/cc/hicore/hook/RepeaterPlus.java index b19ff80ad4..2c631a5159 100644 --- a/app/src/main/java/cc/hicore/hook/RepeaterPlus.java +++ b/app/src/main/java/cc/hicore/hook/RepeaterPlus.java @@ -66,6 +66,8 @@ import io.github.qauxv.util.Initiator; import io.github.qauxv.util.Log; import io.github.qauxv.util.QQVersion; +import io.github.qauxv.util.dexkit.AbstractQQCustomMenuItem; +import io.github.qauxv.util.dexkit.DexKitTarget; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; @@ -86,7 +88,7 @@ public class RepeaterPlus extends BaseFunctionHook implements SessionHooker.IAIO public static final RepeaterPlus INSTANCE = new RepeaterPlus(); private RepeaterPlus() { - super(); + super(null, false, new DexKitTarget[]{AbstractQQCustomMenuItem.INSTANCE}); } private IUiItemAgent mUiAgent = null; @@ -260,7 +262,7 @@ protected void afterHookedMethod(MethodHookParam param) { }); List list = (List) param.getResult(); List result = new ArrayList<>(); - result.add(0,item); + result.add(0, item); result.addAll(list); param.setResult(result); }); diff --git a/app/src/main/java/cc/ioctl/hook/msg/CopyCardMsg.kt b/app/src/main/java/cc/ioctl/hook/msg/CopyCardMsg.kt index 0281dd4706..17c797fa7c 100644 --- a/app/src/main/java/cc/ioctl/hook/msg/CopyCardMsg.kt +++ b/app/src/main/java/cc/ioctl/hook/msg/CopyCardMsg.kt @@ -43,6 +43,7 @@ import io.github.qauxv.util.CustomMenu.createItemNt import io.github.qauxv.util.Initiator import io.github.qauxv.util.QQVersion import io.github.qauxv.util.Toasts +import io.github.qauxv.util.dexkit.AbstractQQCustomMenuItem import io.github.qauxv.util.dexkit.CArkAppItemBubbleBuilder import io.github.qauxv.util.dexkit.DexKit import io.github.qauxv.util.requireMinQQVersion @@ -53,7 +54,7 @@ import java.lang.reflect.Method @FunctionHookEntry @UiItemAgentEntry -object CopyCardMsg : CommonSwitchFunctionHook("CopyCardMsg::BaseChatPie", arrayOf(CArkAppItemBubbleBuilder)) { +object CopyCardMsg : CommonSwitchFunctionHook("CopyCardMsg::BaseChatPie", arrayOf(CArkAppItemBubbleBuilder, AbstractQQCustomMenuItem)) { override val name = "复制卡片消息" diff --git a/app/src/main/java/cc/ioctl/hook/msg/PicMd5Hook.java b/app/src/main/java/cc/ioctl/hook/msg/PicMd5Hook.java index 3951008ba0..5024c9b55e 100644 --- a/app/src/main/java/cc/ioctl/hook/msg/PicMd5Hook.java +++ b/app/src/main/java/cc/ioctl/hook/msg/PicMd5Hook.java @@ -47,6 +47,8 @@ import io.github.qauxv.util.LicenseStatus; import io.github.qauxv.util.QQVersion; import io.github.qauxv.util.Toasts; +import io.github.qauxv.util.dexkit.AbstractQQCustomMenuItem; +import io.github.qauxv.util.dexkit.DexKitTarget; import java.lang.reflect.Array; import java.lang.reflect.Method; import java.util.List; @@ -60,6 +62,7 @@ public class PicMd5Hook extends CommonSwitchFunctionHook { public static final PicMd5Hook INSTANCE = new PicMd5Hook(); private PicMd5Hook() { + super(new DexKitTarget[]{AbstractQQCustomMenuItem.INSTANCE}); } @NonNull diff --git a/app/src/main/java/cc/ioctl/hook/msg/PttForwardHook.java b/app/src/main/java/cc/ioctl/hook/msg/PttForwardHook.java index cc9dc80d34..9d96bf4c34 100644 --- a/app/src/main/java/cc/ioctl/hook/msg/PttForwardHook.java +++ b/app/src/main/java/cc/ioctl/hook/msg/PttForwardHook.java @@ -81,6 +81,7 @@ import io.github.qauxv.util.SyncUtils; import io.github.qauxv.util.Toasts; import io.github.qauxv.util.data.ContactDescriptor; +import io.github.qauxv.util.dexkit.AbstractQQCustomMenuItem; import io.github.qauxv.util.dexkit.CDialogUtil; import io.github.qauxv.util.dexkit.CFaceDe; import io.github.qauxv.util.dexkit.DexKitTarget; @@ -122,7 +123,7 @@ public String[] getUiItemLocation() { } private PttForwardHook() { - super(SyncUtils.PROC_MAIN, new DexKitTarget[]{CFaceDe.INSTANCE, CDialogUtil.INSTANCE}); + super(SyncUtils.PROC_MAIN, new DexKitTarget[]{CFaceDe.INSTANCE, CDialogUtil.INSTANCE, AbstractQQCustomMenuItem.INSTANCE}); } private static void showSavePttFileDialog(Activity activity, final File ptt) { diff --git a/app/src/main/java/io/github/qauxv/util/CustomMenu.kt b/app/src/main/java/io/github/qauxv/util/CustomMenu.kt index 7a0b2a3b06..44cc5de39c 100644 --- a/app/src/main/java/io/github/qauxv/util/CustomMenu.kt +++ b/app/src/main/java/io/github/qauxv/util/CustomMenu.kt @@ -94,10 +94,13 @@ object CustomMenu { ) } + /** + * Remember to add DexKitTarget AbstractQQCustomMenuItem to the constructor! + */ @JvmStatic fun createItemNt(msg: Any, text: String, id: Int, click: () -> Unit): Any { val msgClass = Initiator.loadClass("com.tencent.mobileqq.aio.msg.AIOMsgItem") - val absMenuItem = DexKit.loadClassFromCache(AbstractQQCustomMenuItem)!! + val absMenuItem = DexKit.requireClassFromCache(AbstractQQCustomMenuItem) val clickName = absMenuItem.findMethod { returnType == Void.TYPE && parameterTypes.isEmpty() }.name