Support hooking class static initializer
This commit is contained in:
parent
3248419435
commit
ca2e4b8da8
|
|
@ -271,6 +271,37 @@ public interface XposedInterface {
|
|||
@NonNull
|
||||
MethodUnhooker<Method> hook(@NonNull Method origin, @NonNull Class<? extends Hooker> hooker);
|
||||
|
||||
/**
|
||||
* Hook the static initializer of a class with default priority.
|
||||
* <p>
|
||||
* Note: If the class is initialized, the hook will never be called.
|
||||
* </p>
|
||||
*
|
||||
* @param origin The class to be hooked
|
||||
* @param hooker The hooker class
|
||||
* @return Unhooker for canceling the hook
|
||||
* @throws IllegalArgumentException if class has no static initializer or hooker is invalid
|
||||
* @throws HookFailedError if hook fails due to framework internal error
|
||||
*/
|
||||
@NonNull
|
||||
<T> MethodUnhooker<Constructor<T>> hookClassInitializer(@NonNull Class<T> origin, @NonNull Class<? extends Hooker> hooker);
|
||||
|
||||
/**
|
||||
* Hook the static initializer of a class with specified priority.
|
||||
* <p>
|
||||
* Note: If the class is initialized, the hook will never be called.
|
||||
* </p>
|
||||
*
|
||||
* @param origin The class to be hooked
|
||||
* @param priority The hook priority
|
||||
* @param hooker The hooker class
|
||||
* @return Unhooker for canceling the hook
|
||||
* @throws IllegalArgumentException if class has no static initializer or hooker is invalid
|
||||
* @throws HookFailedError if hook fails due to framework internal error
|
||||
*/
|
||||
@NonNull
|
||||
<T> MethodUnhooker<Constructor<T>> hookClassInitializer(@NonNull Class<T> origin, int priority, @NonNull Class<? extends Hooker> hooker);
|
||||
|
||||
/**
|
||||
* Hook a method with specified priority.
|
||||
*
|
||||
|
|
@ -358,6 +389,7 @@ public interface XposedInterface {
|
|||
/**
|
||||
* Basically the same as {@link Constructor#newInstance(Object...)}, but calls the original constructor
|
||||
* as it was before the interception by Xposed.
|
||||
*
|
||||
* @param constructor The constructor to create and initialize a new instance
|
||||
* @param thisObject The instance to be constructed
|
||||
* @param args The arguments used for the construction
|
||||
|
|
|
|||
|
|
@ -55,6 +55,18 @@ public class XposedInterfaceWrapper implements XposedInterface {
|
|||
return mBase.hook(origin, hooker);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public <T> MethodUnhooker<Constructor<T>> hookClassInitializer(@NonNull Class<T> origin, @NonNull Class<? extends Hooker> hooker) {
|
||||
return mBase.hookClassInitializer(origin, hooker);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public <T> MethodUnhooker<Constructor<T>> hookClassInitializer(@NonNull Class<T> origin, int priority, @NonNull Class<? extends Hooker> hooker) {
|
||||
return mBase.hookClassInitializer(origin, priority, hooker);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public final MethodUnhooker<Method> hook(@NonNull Method origin, int priority, @NonNull Class<? extends Hooker> hooker) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue