我在钩子操作之后执行方法之前写过。
现在我想在我自己的界面中触发钩子方法。
我应该如何调用钩子方法
一个简短的示例代码会很好:)
谢谢
简答
你需要调用java.lang.reflect.Method.invoke()
长答案
我假设您想调用(“调用”)您从代码的其他部分挂钩的方法。
代码示例-
//To save the returned Member and Object
public static Method myMember;
public static Object myObject;
.
.
.
//In your hook
protected Object beforeHookedMethod(MethodHookParam methodHookParam){
//Cast to method and save for later
myMember = (Method) methodHookParam.method;
myObject = methodHookParam.thisObject;
}
.
.
.
//Later, in your interface, to call the function
myMember.invoke(myObject)
注意- 如果您需要将参数传递给函数调用,您在 1 中获得的 MethodHookParam 对象也有args字段中的参数。
更容易 - 如果您要调用的函数是静态的
如果函数是静态的,则不需要等待回调。
注意- 另外,如果你仍然被那个方法所吸引,你的beforeHookedMethod()和afterHookedMethod()在调用这个函数时仍然会被调用。如果您不想调用这些,请使用XposedBridge.invokeOriginalMethod()而不是上面的 Method.invoke()。