修复一个 Hook 异常疑似系统界面崩溃问题

This commit is contained in:
2022-02-07 21:31:25 +08:00
parent e05d65e7e5
commit 51e3eb8784

View File

@@ -675,10 +675,12 @@ class HookMain : IXposedHookLoadPackage {
override fun afterHookedMethod(param: MethodHookParam) { override fun afterHookedMethod(param: MethodHookParam) {
/** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */ /** 对于之前没有通知图标色彩判断功能的版本判断是 MIUI 样式就停止 Hook */
if (!lpparam.hasIgnoreStatusBarIconColor() && lpparam.isShowMiuiStyle()) return if (!lpparam.hasIgnoreStatusBarIconColor() && lpparam.isShowMiuiStyle()) return
lpparam.hookSmallIconOnSet( runWithoutError(error = "GetSmallIconDoing") {
context = lpparam.globalContext ?: param.args[0] as Context, lpparam.hookSmallIconOnSet(
param.args?.get(if (isTooOld) 1 else 0) as? StatusBarNotification?, param context = lpparam.globalContext ?: param.args[0] as Context,
) param.args?.get(if (isTooOld) 1 else 0) as? StatusBarNotification?, param
)
}
} }
}) })
} }
@@ -708,19 +710,21 @@ class HookMain : IXposedHookLoadPackage {
}.also { }.also {
XposedBridge.hookMethod(it, object : XC_MethodReplacement() { XposedBridge.hookMethod(it, object : XC_MethodReplacement() {
override fun replaceHookedMethod(param: MethodHookParam): Any? { override fun replaceHookedMethod(param: MethodHookParam): Any? {
if (isNewWay) runWithoutError(error = "AutoSetAppIconDoing") {
lpparam.hookNotifyIconOnSet( if (isNewWay)
context = param.args?.get(0) as? Context ?: lpparam.globalContext lpparam.hookNotifyIconOnSet(
?: error("GlobalContext got null"), context = param.args?.get(0) as? Context ?: lpparam.globalContext
param.args?.get(2) as? StatusBarNotification?, ?: error("GlobalContext got null"),
param.args?.get(1) as ImageView param.args?.get(2) as? StatusBarNotification?,
) param.args?.get(1) as ImageView
else )
lpparam.hookNotifyIconOnSet( else
context = lpparam.globalContext ?: error("GlobalContext got null"), lpparam.hookNotifyIconOnSet(
param.args?.get(1) as? StatusBarNotification?, context = lpparam.globalContext ?: error("GlobalContext got null"),
param.args?.get(0) as ImageView param.args?.get(1) as? StatusBarNotification?,
) param.args?.get(0) as ImageView
)
}
return null return null
} }
}) })