Fix parasitic manager state restore on 8.1 (#1725)

This commit is contained in:
LoveSy 2022-02-25 20:34:36 +08:00 committed by GitHub
parent bc8b4c69a5
commit 2ba199d68c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 11 deletions

View File

@ -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;
});
}
}
}
};