From bde9990c508ea3e8af2308a15f6e12b6996db300 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Sat, 5 Feb 2022 16:42:41 +0800 Subject: [PATCH] Fix module re-enable (#1631) --- .../lsposed/lspd/service/ConfigManager.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java b/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java index d747ecc7..1d61d197 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -825,17 +825,17 @@ public class ConfigManager { } public boolean enableModule(String packageName) throws RemoteException { + if (packageName.equals("lspd")) return false; PackageInfo pkgInfo = PackageService.getPackageInfoFromAllUsers(packageName, PackageService.MATCH_ALL_FLAGS).values().stream().findFirst().orElse(null); - if (pkgInfo == null || pkgInfo.applicationInfo == null) { - return false; - } - if (packageName.equals("lspd") || !updateModuleApkPath(packageName, getModuleApkPath(pkgInfo.applicationInfo), false)) - return false; - boolean changed = executeInTransaction(() -> { - ContentValues values = new ContentValues(); - values.put("enabled", 1); - return db.update("modules", values, "module_pkg_name = ?", new String[]{packageName}) > 0; - }); + if (pkgInfo == null || pkgInfo.applicationInfo == null) return false; + var modulePath = getModuleApkPath(pkgInfo.applicationInfo); + if (modulePath == null) return true; + boolean changed = updateModuleApkPath(packageName, modulePath, false) || + executeInTransaction(() -> { + ContentValues values = new ContentValues(); + values.put("enabled", 1); + return db.update("modules", values, "module_pkg_name = ?", new String[]{packageName}) > 0; + }); if (changed) { // Called by manager, should be async updateCaches(false);