Как вызвать метод пользовательского объекта, переданного в качестве аргумента в Xposed?

В Xposed я пытаюсь вызвать метод getResult из AppCustomClass Объект передан в качестве аргумента в подключенном методе.

protected void myMethod(XC_LoadPackage.LoadPackageParam loadPackageParam) {
    final Class<?> appCustomClass = XposedHelpers.findClass("com.app.customClass", loadPackageParam.classLoader);

    findAndHookMethod("com.app.aClass", loadPackageParam.classLoader, "aMethod", appCustomClass, new XC_MethodHook() {
        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
          //How to call param.args[0].getResult()
      }
}

1 ответ

Вы можете использовать XposedHelpers.callMethod, у него есть два варианта

callMethod(Object obj, String methodName, Class[]<?> parameterTypes, Object... args)

а также

callMethod(Object obj, String methodName, Object... args)

так что вы можете сделать

XposedHelpers.callMethod(param.args[0],"getResult");

если он принимает аргументы сделать

XposedHelpers.callMethod(param.args[0],"getResult",arg1,arg2,arg3);

Примечание: метод разрешается с помощью findMethodBestMatch. Исключение, выброшенное этим методом ( "callMethod"), представляет собой XposedHelpers.InvocationTargetError, которое выдает исключение, которое выдается (если оно есть) вызванным методом.

дальнейшее чтение: http://api.xposed.info/reference/de/robv/android/xposed/XposedHelpers.html

Другие вопросы по тегам