mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-05 18:25:28 +08:00
Added new function "onPrepareHook" when the hook start success
This commit is contained in:
@@ -99,17 +99,23 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
@DoNotUseMethod
|
@DoNotUseMethod
|
||||||
fun hook(): Result {
|
fun hook(): Result {
|
||||||
if (YukiHookAPI.hasXposedBridge.not()) return Result()
|
if (YukiHookAPI.hasXposedBridge.not()) return Result()
|
||||||
if (hookMembers.isEmpty()) error("Hook Members is empty,hook aborted")
|
return if (hookMembers.isEmpty()) error("Hook Members is empty,hook aborted")
|
||||||
else Thread {
|
else Result().also {
|
||||||
/** 延迟使得方法取到返回值 */
|
Thread {
|
||||||
SystemClock.sleep(1)
|
/** 延迟使得方法取到返回值 */
|
||||||
if (isDisableCreaterRunHook.not() && hookClass.instance != null) hookMembers.forEach { it.hook() }
|
SystemClock.sleep(1)
|
||||||
if (isDisableCreaterRunHook.not() && hookClass.instance == null)
|
when {
|
||||||
if (onHookClassNotFoundFailureCallback == null)
|
isDisableCreaterRunHook.not() && hookClass.instance != null -> {
|
||||||
yLoggerE(msg = "HookClass [${hookClass.name}] not found", e = hookClass.throwable)
|
it.onPrepareHook?.invoke()
|
||||||
else onHookClassNotFoundFailureCallback?.invoke(hookClass.throwable ?: Throwable("[${hookClass.name}] not found"))
|
hookMembers.forEach { m -> m.hook() }
|
||||||
}.start()
|
}
|
||||||
return Result()
|
isDisableCreaterRunHook.not() && hookClass.instance == null ->
|
||||||
|
if (onHookClassNotFoundFailureCallback == null)
|
||||||
|
yLoggerE(msg = "HookClass [${hookClass.name}] not found", e = hookClass.throwable)
|
||||||
|
else onHookClassNotFoundFailureCallback?.invoke(hookClass.throwable ?: Throwable("[${hookClass.name}] not found"))
|
||||||
|
}
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -611,6 +617,9 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
*/
|
*/
|
||||||
inner class Result {
|
inner class Result {
|
||||||
|
|
||||||
|
/** Hook 开始时的监听事件回调 */
|
||||||
|
internal var onPrepareHook: (() -> Unit)? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建监听事件方法体
|
* 创建监听事件方法体
|
||||||
* @param initiate 方法体
|
* @param initiate 方法体
|
||||||
@@ -630,6 +639,16 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 监听 [hookClass] 存在时准备开始 Hook 的操作
|
||||||
|
* @param initiate 条件方法体
|
||||||
|
* @return [Result] 可继续向下监听
|
||||||
|
*/
|
||||||
|
fun onPrepareHook(initiate: () -> Unit): Result {
|
||||||
|
onPrepareHook = initiate
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监听 [hookClass] 找不到时发生错误的回调方法
|
* 监听 [hookClass] 找不到时发生错误的回调方法
|
||||||
* @param initiate 回调错误
|
* @param initiate 回调错误
|
||||||
|
Reference in New Issue
Block a user