From 4bcf7718add39322c3c01f08dbf3b63a25606d04 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Fri, 4 Feb 2022 01:53:48 +0800 Subject: [PATCH] Do not broadcast when module path not changed (#1622) --- .../main/java/org/lsposed/lspd/service/ConfigManager.java | 2 +- .../main/java/org/lsposed/lspd/service/LSPosedService.java | 7 +++---- 2 files changed, 4 insertions(+), 5 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 9f5461a1..d747ecc7 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -705,7 +705,7 @@ public class ConfigManager { updateCaches(true); return true; } - return count >= 0; + return count > 0; } // Only be called before updating modules. No need to cache. diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java b/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java index aeb8b412..aeb9cba1 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java @@ -119,18 +119,17 @@ public class LSPosedService extends ILSPosedService.Stub { if (components != null && !Arrays.stream(components).reduce(false, (p, c) -> p || c.equals(moduleName), Boolean::logicalOr)) { return; } - broadcastAndShowNotification(moduleName, userId, intent, isXposedModule); if (isXposedModule) { // When installing a new Xposed module, we update the apk path to mark it as a // module to send a broadcast when modules that have not been activated are // uninstalled. - ConfigManager.getInstance().updateModuleApkPath(moduleName, ConfigManager.getInstance().getModuleApkPath(applicationInfo), true); - // when package is changed, we may need to update cache (module cache or process cache) - ConfigManager.getInstance().updateCache(); + // If cache not updated, assume it's not xposed module + isXposedModule = ConfigManager.getInstance().updateModuleApkPath(moduleName, ConfigManager.getInstance().getModuleApkPath(applicationInfo), false); } else if (ConfigManager.getInstance().isUidHooked(uid)) { // it will automatically remove obsolete app from database ConfigManager.getInstance().updateAppCache(); } + broadcastAndShowNotification(moduleName, userId, intent, isXposedModule); break; } case Intent.ACTION_UID_REMOVED: {