From 9f55d4f659f69c0e6c056200c2efe9754fe90198 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Wed, 9 Nov 2022 20:42:59 +0100 Subject: [PATCH] Do not print a trace when calling the private finish() overload fails --- .../java/com/beemdevelopment/aegis/ui/AegisActivity.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java index 269a2e8f..33b6fe85 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java @@ -74,15 +74,20 @@ public abstract class AegisActivity extends AppCompatActivity implements VaultMa } @SuppressLint("SoonBlockedPrivateApi") + @SuppressWarnings("JavaReflectionMemberAccess") @Override public void onLocked(boolean userInitiated) { setResult(RESULT_CANCELED, null); + try { + // Call a private overload of the finish() method to prevent the app + // from disappearing from the recent apps menu Method method = Activity.class.getDeclaredMethod("finish", int.class); method.setAccessible(true); method.invoke(this, 2); // FINISH_TASK_WITH_ACTIVITY = 2 } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - e.printStackTrace(); + // On recent Android versions, the overload of the finish() method + // used above is no longer accessible finishAndRemoveTask(); } }