mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-06 10:45:47 +08:00
Modify change invokeOriginal function and add callOriginal function in HookParam
This commit is contained in:
@@ -566,7 +566,7 @@ class YukiMemberHookCreater(@PublishedApi internal val packageParam: PackagePara
|
||||
onAllFailureCallback?.invoke(e)
|
||||
if (onConductFailureCallback == null && onAllFailureCallback == null) onHookFailureMsg(e)
|
||||
/** 若发生异常则会自动调用未经 Hook 的原始方法保证 Hook APP 正常运行 */
|
||||
param.member?.also { member -> param.invokeOriginalMember(member, param.args) }
|
||||
assign.callOriginal()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -34,6 +34,7 @@ import com.highcapable.yukihookapi.hook.core.YukiMemberHookCreater.MemberHookCre
|
||||
import com.highcapable.yukihookapi.hook.factory.classOf
|
||||
import com.highcapable.yukihookapi.hook.log.yLoggerE
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.factory.YukiHookCallback
|
||||
import com.highcapable.yukihookapi.hook.xposed.bridge.factory.YukiHookHelper
|
||||
import java.lang.reflect.Constructor
|
||||
import java.lang.reflect.Member
|
||||
import java.lang.reflect.Method
|
||||
@@ -182,11 +183,38 @@ class HookParam internal constructor(private val createrInstance: YukiMemberHook
|
||||
/**
|
||||
* 执行原始 [Member]
|
||||
*
|
||||
* 未进行 Hook 的 [Member]
|
||||
* @param args 参数实例
|
||||
* @return [T]
|
||||
* 调用自身未进行 Hook 的原始 [Member] 并调用原始参数执行
|
||||
* @return [Any] or null
|
||||
*/
|
||||
fun <T> Member.invokeOriginal(vararg args: Any?) = param?.invokeOriginalMember(member = this, *args) as? T?
|
||||
fun callOriginal() = callOriginal<Any>()
|
||||
|
||||
/**
|
||||
* 执行原始 [Member]
|
||||
*
|
||||
* 调用自身未进行 Hook 的原始 [Member] 并调用原始参数执行
|
||||
* @return [T] or null
|
||||
*/
|
||||
@JvmName(name = "callOriginal_Generics")
|
||||
fun <T> callOriginal() = invokeOriginal<T>(*args)
|
||||
|
||||
/**
|
||||
* 执行原始 [Member]
|
||||
*
|
||||
* 调用自身未进行 Hook 的原始 [Member] 并自定义 [args] 执行
|
||||
* @param args 参数实例
|
||||
* @return [Any] or null
|
||||
*/
|
||||
fun invokeOriginal(vararg args: Any?) = invokeOriginal<Any>(*args)
|
||||
|
||||
/**
|
||||
* 执行原始 [Member]
|
||||
*
|
||||
* 调用自身未进行 Hook 的原始 [Member] 并自定义 [args] 执行
|
||||
* @param args 参数实例
|
||||
* @return [T] or null
|
||||
*/
|
||||
@JvmName(name = "invokeOriginal_Generics")
|
||||
fun <T> invokeOriginal(vararg args: Any?) = YukiHookHelper.invokeOriginalMember(member, instance, *args) as T?
|
||||
|
||||
/**
|
||||
* 设置当前 Hook 对象方法的 [result] 返回值为 true
|
||||
|
@@ -187,9 +187,6 @@ internal object YukiHookHelper {
|
||||
override fun args(index: Int, value: Any?) {
|
||||
this@compat.args[index] = value
|
||||
}
|
||||
|
||||
override fun invokeOriginalMember(member: Member, vararg args: Any?) =
|
||||
YukiHookHelper.invokeOriginalMember(member, this@compat.thisObject, args)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -308,15 +305,5 @@ internal abstract class YukiHookCallback(open val priority: Int) {
|
||||
* @param value 参数对象实例
|
||||
*/
|
||||
fun args(index: Int, value: Any?)
|
||||
|
||||
/**
|
||||
* 执行原始 [Member]
|
||||
*
|
||||
* 未进行 Hook 的 [Member]
|
||||
* @param member 实例
|
||||
* @param args 参数实例
|
||||
* @return [Any] or null
|
||||
*/
|
||||
fun invokeOriginalMember(member: Member, vararg args: Any?): Any?
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user