mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +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
|
||||
fun hook(): Result {
|
||||
if (YukiHookAPI.hasXposedBridge.not()) return Result()
|
||||
if (hookMembers.isEmpty()) error("Hook Members is empty,hook aborted")
|
||||
else Thread {
|
||||
/** 延迟使得方法取到返回值 */
|
||||
SystemClock.sleep(1)
|
||||
if (isDisableCreaterRunHook.not() && hookClass.instance != null) hookMembers.forEach { it.hook() }
|
||||
if (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()
|
||||
return Result()
|
||||
return if (hookMembers.isEmpty()) error("Hook Members is empty,hook aborted")
|
||||
else Result().also {
|
||||
Thread {
|
||||
/** 延迟使得方法取到返回值 */
|
||||
SystemClock.sleep(1)
|
||||
when {
|
||||
isDisableCreaterRunHook.not() && hookClass.instance != null -> {
|
||||
it.onPrepareHook?.invoke()
|
||||
hookMembers.forEach { m -> m.hook() }
|
||||
}
|
||||
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 {
|
||||
|
||||
/** Hook 开始时的监听事件回调 */
|
||||
internal var onPrepareHook: (() -> Unit)? = null
|
||||
|
||||
/**
|
||||
* 创建监听事件方法体
|
||||
* @param initiate 方法体
|
||||
@@ -630,6 +639,16 @@ class YukiHookCreater(private val packageParam: PackageParam, private val hookCl
|
||||
return this
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听 [hookClass] 存在时准备开始 Hook 的操作
|
||||
* @param initiate 条件方法体
|
||||
* @return [Result] 可继续向下监听
|
||||
*/
|
||||
fun onPrepareHook(initiate: () -> Unit): Result {
|
||||
onPrepareHook = initiate
|
||||
return this
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听 [hookClass] 找不到时发生错误的回调方法
|
||||
* @param initiate 回调错误
|
||||
|
Reference in New Issue
Block a user