From 135a7d69f881b29f6477260351be420526f07d4d Mon Sep 17 00:00:00 2001 From: 5ec1cff <56485584+5ec1cff@users.noreply.github.com> Date: Sun, 25 Sep 2022 16:07:55 +0800 Subject: [PATCH] Avoid calling `finishReceiver` for unordered broadcasts (#2139) --- .../main/java/org/lsposed/lspd/service/LSPosedService.java | 6 ++++++ 1 file changed, 6 insertions(+) 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 45bb7092..e54d867a 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPosedService.java @@ -247,6 +247,7 @@ public class LSPosedService extends ILSPosedService.Stub { @Override public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { getExecutorService().submit(() -> dispatchPackageChanged(intent)); + if (!ordered) return; try { ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); } catch (Throwable e) { @@ -272,6 +273,7 @@ public class LSPosedService extends ILSPosedService.Stub { @Override public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { getExecutorService().submit(() -> dispatchUserUnlocked(intent)); + if (!ordered) return; try { ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); } catch (Throwable e) { @@ -294,6 +296,7 @@ public class LSPosedService extends ILSPosedService.Stub { @Override public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { getExecutorService().submit(() -> dispatchConfigurationChanged(intent)); + if (!ordered) return; try { ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); } catch (Throwable e) { @@ -318,6 +321,7 @@ public class LSPosedService extends ILSPosedService.Stub { @Override public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { getExecutorService().submit(() -> dispatchSecretCodeReceive()); + if (!ordered) return; try { ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); } catch (Throwable e) { @@ -347,6 +351,7 @@ public class LSPosedService extends ILSPosedService.Stub { Log.e(TAG, "setActivityController", e); } }); + if (!ordered) return; try { ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); } catch (Throwable e) { @@ -370,6 +375,7 @@ public class LSPosedService extends ILSPosedService.Stub { @Override public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { getExecutorService().submit(() -> dispatchUserChanged(intent)); + if (!ordered) return; try { ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); } catch (Throwable e) {