From 2ba199d68c053e7ecfdaae6537a7c303ea7f059a Mon Sep 17 00:00:00 2001 From: LoveSy Date: Fri, 25 Feb 2022 20:34:36 +0800 Subject: [PATCH] Fix parasitic manager state restore on 8.1 (#1725) --- .../lspd/util/ParasiticManagerHooker.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/org/lsposed/lspd/util/ParasiticManagerHooker.java b/core/src/main/java/org/lsposed/lspd/util/ParasiticManagerHooker.java index cea431ee..7c4401cb 100644 --- a/core/src/main/java/org/lsposed/lspd/util/ParasiticManagerHooker.java +++ b/core/src/main/java/org/lsposed/lspd/util/ParasiticManagerHooker.java @@ -142,17 +142,19 @@ public class ParasiticManagerHooker { @Override protected void afterHookedMethod(MethodHookParam param) { - if (activityClientRecordClass.isInstance(param.thisObject)) { - var aInfo = (ActivityInfo) XposedHelpers.getObjectField(param.thisObject, "activityInfo"); - Hookers.logD("loading state of " + aInfo.name); - states.computeIfPresent(aInfo.name, (k, v) -> { - XposedHelpers.setObjectField(param.thisObject, "state", v); - return v; - }); - persistentStates.computeIfPresent(aInfo.name, (k, v) -> { - XposedHelpers.setObjectField(param.thisObject, "persistentState", v); - return v; - }); + for (var i = 0; i < param.args.length; ++i) { + if (param.args[i] instanceof ActivityInfo) { + var aInfo = (ActivityInfo) param.args[i]; + Hookers.logD("loading state of " + aInfo.name); + states.computeIfPresent(aInfo.name, (k, v) -> { + XposedHelpers.setObjectField(param.thisObject, "state", v); + return v; + }); + persistentStates.computeIfPresent(aInfo.name, (k, v) -> { + XposedHelpers.setObjectField(param.thisObject, "persistentState", v); + return v; + }); + } } } };