Changed "PackageParam.isHookParamCallback" to "HookParam.isCallbackCalled"

This commit is contained in:
2022-05-16 10:06:47 +08:00
parent 48af06b2e7
commit 755341094a
3 changed files with 16 additions and 8 deletions

View File

@@ -111,8 +111,8 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
@PublishedApi @PublishedApi
internal fun hook(): Result { internal fun hook(): Result {
if (YukiHookBridge.hasXposedBridge.not()) return Result() if (YukiHookBridge.hasXposedBridge.not()) return Result()
/** 过滤 [HookEntryType.ZYGOTE] 与 [HookEntryType.PACKAGE] 或 [PackageParam.isHookParamCallback] 已被执行 */ /** 过滤 [HookEntryType.ZYGOTE] 与 [HookEntryType.PACKAGE] 或 [HookParam.isCallbackCalled] 已被执行 */
if (packageParam.wrapper?.type == HookEntryType.RESOURCES && packageParam.isHookParamCallback.not()) return Result() if (packageParam.wrapper?.type == HookEntryType.RESOURCES && HookParam.isCallbackCalled.not()) return Result()
return if (preHookMembers.isEmpty()) error("Hook Members is empty, hook aborted") return if (preHookMembers.isEmpty()) error("Hook Members is empty, hook aborted")
else Result().also { else Result().also {
Thread { Thread {
@@ -472,7 +472,7 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
beforeHookCallback?.invoke(param) beforeHookCallback?.invoke(param)
if (beforeHookCallback != null) if (beforeHookCallback != null)
onHookLogMsg(msg = "Before Hook Member [${member ?: "All of \"$allMethodsName\""}] done [$tag]") onHookLogMsg(msg = "Before Hook Member [${member ?: "All of \"$allMethodsName\""}] done [$tag]")
packageParam.isHookParamCallback = true HookParam.invoke()
}.onFailure { }.onFailure {
onConductFailureCallback?.invoke(param, it) onConductFailureCallback?.invoke(param, it)
onAllFailureCallback?.invoke(it) onAllFailureCallback?.invoke(it)
@@ -487,7 +487,7 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
afterHookCallback?.invoke(param) afterHookCallback?.invoke(param)
if (afterHookCallback != null) if (afterHookCallback != null)
onHookLogMsg(msg = "After Hook Member [${member ?: "All of \"$allMethodsName\""}] done [$tag]") onHookLogMsg(msg = "After Hook Member [${member ?: "All of \"$allMethodsName\""}] done [$tag]")
packageParam.isHookParamCallback = true HookParam.invoke()
}.onFailure { }.onFailure {
onConductFailureCallback?.invoke(param, it) onConductFailureCallback?.invoke(param, it)
onAllFailureCallback?.invoke(it) onAllFailureCallback?.invoke(it)
@@ -504,7 +504,7 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
YukiHookBridge.Hooker.hookMethod(member, replaceMent)?.also { onHookedCallback?.invoke(it) } YukiHookBridge.Hooker.hookMethod(member, replaceMent)?.also { onHookedCallback?.invoke(it) }
?: error("Hook Member [$member] failed") ?: error("Hook Member [$member] failed")
else YukiHookBridge.Hooker.hookMethod(member, beforeAfterHook)?.also { onHookedCallback?.invoke(it) } else YukiHookBridge.Hooker.hookMethod(member, beforeAfterHook)?.also { onHookedCallback?.invoke(it) }
?: error("Hook Member [$member] failed")).run { packageParam.isHookParamCallback = true } ?: error("Hook Member [$member] failed")).run { HookParam.invoke() }
}.onFailure { }.onFailure {
onHookingFailureCallback?.invoke(it) onHookingFailureCallback?.invoke(it)
onAllFailureCallback?.invoke(it) onAllFailureCallback?.invoke(it)

View File

@@ -42,6 +42,17 @@ import java.lang.reflect.Method
*/ */
class HookParam(private val createrInstance: YukiMemberHookCreater, private var wrapper: HookParamWrapper? = null) { class HookParam(private val createrInstance: YukiMemberHookCreater, private var wrapper: HookParamWrapper? = null) {
internal companion object {
/** [HookParam] 是否已经执行首次回调事件 */
internal var isCallbackCalled = false
/** 设置 [HookParam] 执行首次回调事件 */
internal fun invoke() {
isCallbackCalled = true
}
}
/** /**
* 在回调中设置 [HookParam] 使用的 [HookParamWrapper] * 在回调中设置 [HookParam] 使用的 [HookParamWrapper]
* @param wrapper [HookParamWrapper] 实例 * @param wrapper [HookParamWrapper] 实例

View File

@@ -56,9 +56,6 @@ import com.highcapable.yukihookapi.hook.xposed.prefs.YukiHookModulePrefs
*/ */
open class PackageParam(@PublishedApi internal var wrapper: PackageParamWrapper? = null) { open class PackageParam(@PublishedApi internal var wrapper: PackageParamWrapper? = null) {
/** [HookParam] 是否已经执行回调事件 */
internal var isHookParamCallback = false
/** /**
* 用于展示的 APP 包名 * 用于展示的 APP 包名
* @return [String] * @return [String]