From b26c8bc59e46ca8ece1a40da90be8bdb1060fd72 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Sat, 13 Nov 2021 16:25:02 +0800 Subject: [PATCH] Init resources hook when call SystemWideReplace (#1400) Fix #1399 --- core/src/main/java/android/content/res/XResources.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/main/java/android/content/res/XResources.java b/core/src/main/java/android/content/res/XResources.java index f1c4f3c2..483e1133 100644 --- a/core/src/main/java/android/content/res/XResources.java +++ b/core/src/main/java/android/content/res/XResources.java @@ -57,6 +57,7 @@ import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodHook.MethodHookParam; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedBridge.CopyOnWriteSortedSet; +import de.robv.android.xposed.XposedInit; import de.robv.android.xposed.callbacks.XC_LayoutInflated; import de.robv.android.xposed.callbacks.XC_LayoutInflated.LayoutInflatedParam; import de.robv.android.xposed.callbacks.XCallback; @@ -567,6 +568,13 @@ public class XResources extends XResourcesSuperClass { private static void setReplacement(int id, Object replacement, XResources res) { String resDir = (res != null) ? res.mResDir : null; + if (res == null) { + try { + XposedInit.hookResources(); + } catch (Throwable throwable) { + throw new IllegalStateException("Failed to initialize resources hook"); + } + } if (id == 0) throw new IllegalArgumentException("id 0 is not an allowed resource identifier"); else if (resDir == null && id >= 0x7f000000)