From 9a60b8f2b6b9313a847039773b4d10522d167609 Mon Sep 17 00:00:00 2001 From: liquanfei Date: Wed, 14 Nov 2018 20:33:35 +0800 Subject: [PATCH] solve "java.lang.IllegalArgumentException: Expected receiver of type xxx, but got xx" when Xposed callMethod. --- .../main/java/net/androidwing/hotxposed/HotXposed.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hotxposed/src/main/java/net/androidwing/hotxposed/HotXposed.java b/hotxposed/src/main/java/net/androidwing/hotxposed/HotXposed.java index 0591818..56486e2 100644 --- a/hotxposed/src/main/java/net/androidwing/hotxposed/HotXposed.java +++ b/hotxposed/src/main/java/net/androidwing/hotxposed/HotXposed.java @@ -7,6 +7,7 @@ import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.callbacks.XC_LoadPackage; import java.io.File; +import java.lang.reflect.Method; /** * Created on 2018/3/30. @@ -27,8 +28,12 @@ public static void hook(Class clazz, XC_LoadPackage.LoadPackageParam lpparam) PathClassLoader classLoader = new PathClassLoader(apkFile.getAbsolutePath(), lpparam.getClass().getClassLoader()); - XposedHelpers.callMethod(classLoader.loadClass(clazz.getName()).newInstance(), "dispatch",lpparam); - + Class cls = classLoader.loadClass(clazz.getName()); + if (cls != null) { + Method method = cls.getDeclaredMethod("dispatch", XC_LoadPackage.LoadPackageParam.class); + method.setAccessible(true); + method.invoke(cls.newInstance(), lpparam); + } } private static void filterNotify(XC_LoadPackage.LoadPackageParam lpparam)