接口 XposedInterface.Chain
- 封闭接口:
XposedInterface
public static interface XposedInterface.Chain
方法或构造函数的拦截器链(Interceptor Chain)。Chain 对象不能在多个线程之间共享,也不能在
XposedInterface.Hooker.intercept(Chain) 结束后重复使用。-
方法概要
修饰符和类型方法说明getArg(int index) 获取指定索引处的参数。getArgs()获取参数列表。获取当前被 Hook 的方法 / 构造函数。获取调用时的this指针;如果是 static 方法则返回null。proceed()使用相同的参数和this指针继续执行链中的下一个拦截器。使用给定的参数以及相同的this指针,继续执行链中的下一个拦截器。proceedWith(Object thisObject) 使用相同的参数以及给定的this指针,继续执行链中的下一个拦截器。proceedWith(Object thisObject, Object[] args) 使用给定的参数和this指针,继续执行链中的下一个拦截器。
-
方法详细资料
-
getExecutable
获取当前被 Hook 的方法 / 构造函数。 -
getThisObject
Object getThisObject()获取调用时的this指针;如果是 static 方法则返回null。 -
getArgs
获取参数列表。返回的列表是不可变的。 如果需要修改参数,应调用proceed(Object...)或proceedWith(Object, Object...)并传入新的参数。 -
getArg
获取指定索引处的参数。- 参数:
index- 参数索引- 返回:
- 指定索引处的参数
- 抛出:
IndexOutOfBoundsException- 如果索引越界ClassCastException- 如果参数无法转换为期望类型
-
proceed
使用相同的参数和this指针继续执行链中的下一个拦截器。- 返回:
- 下一个拦截器的返回结果;如果当前拦截器是链中的最后一个,则返回原始可执行方法的结果。
对于 void 方法和构造函数,始终返回
null。 - 抛出:
Throwable- 如果任意拦截器或原始方法抛出异常
-
proceed
使用给定的参数以及相同的this指针,继续执行链中的下一个拦截器。- 参数:
args- 调用所使用的参数- 返回:
- 下一个拦截器的返回结果;如果当前拦截器是链中的最后一个,则返回原始可执行方法的结果。
对于 void 方法和构造函数,始终返回
null。 - 抛出:
Throwable- 如果任意拦截器或原始方法抛出异常
-
proceedWith
使用相同的参数以及给定的this指针,继续执行链中的下一个拦截器。 静态方法的拦截器不应调用此方法。- 参数:
thisObject- 本次调用的this指针- 返回:
- 下一个拦截器的返回结果;如果当前拦截器是链中的最后一个,则返回原始可执行方法的结果。
对于 void 方法和构造函数,始终返回
null。 - 抛出:
Throwable- 如果任意拦截器或原始方法抛出异常
-
proceedWith
使用给定的参数和this指针,继续执行链中的下一个拦截器。 静态方法的拦截器不应调用此方法。- 参数:
thisObject- 本次调用的this指针args- 本次调用所使用的参数- 返回:
- 下一个拦截器的返回结果;如果当前拦截器是链中的最后一个,则返回原始可执行方法的结果。
对于 void 方法和构造函数,始终返回
null。 - 抛出:
Throwable- 如果任意拦截器或原始方法抛出异常
-