From 26618f8d735ef5003a216392ba9e19d0ea034085 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Sun, 3 Nov 2019 17:01:09 -0500 Subject: [PATCH] Don't do broadcast tests from app Running broadcast tests from the app does not accurately verifies whether the broadcasts can be delivered when the app is not running in the foreground, which is why we are running the test. The only sane way to verify broadcasts is to trigger the broadcast test directly from the daemon on boot complete. If it is not deliverable, then activity mode shall be chosen. In the meantime, cleanup AndroidManifest.xml --- app/src/main/AndroidManifest.xml | 31 ++++--------------- .../main/java/com/topjohnwu/magisk/Const.kt | 2 +- .../main/java/com/topjohnwu/magisk/Info.kt | 7 +---- .../magisk/model/receiver/GeneralReceiver.kt | 23 +++++--------- .../com/topjohnwu/magisk/ui/SplashActivity.kt | 5 +++ scripts/emulator.sh | 1 + stub/src/main/AndroidManifest.xml | 7 ----- 7 files changed, 21 insertions(+), 55 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9ba7c0f60..86d1c906b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,29 +1,11 @@ - - - @@ -36,7 +18,6 @@ tools:replace="android:appComponentFactory"> - - - - - - @@ -89,7 +65,6 @@ - @@ -105,6 +80,12 @@ android:authorities="${applicationId}.workmanager-init" tools:node="remove" /> + + + diff --git a/app/src/main/java/com/topjohnwu/magisk/Const.kt b/app/src/main/java/com/topjohnwu/magisk/Const.kt index 79738f20f..beb603d8a 100644 --- a/app/src/main/java/com/topjohnwu/magisk/Const.kt +++ b/app/src/main/java/com/topjohnwu/magisk/Const.kt @@ -24,7 +24,7 @@ object Const { object Version { const val MIN_SUPPORT = 18000 - const val CONNECT_MODE = 20002 + const val CONNECT_MODE = 20100 } object ID { diff --git a/app/src/main/java/com/topjohnwu/magisk/Info.kt b/app/src/main/java/com/topjohnwu/magisk/Info.kt index 2eec3295a..7b4820c25 100644 --- a/app/src/main/java/com/topjohnwu/magisk/Info.kt +++ b/app/src/main/java/com/topjohnwu/magisk/Info.kt @@ -37,13 +37,8 @@ object Info { val code = ShellUtils.fastCmd("magisk -V").toInt() val hide = Shell.su("magiskhide --status").exec().isSuccess var mode = -1 - if (code >= Const.Version.CONNECT_MODE) { + if (code >= Const.Version.CONNECT_MODE) mode = Shell.su("magisk --connect-mode").exec().code - if (mode == 0) { - // Manually trigger broadcast test - Shell.su("magisk --broadcast-test").exec() - } - } Env(code, str, hide, mode) }.getOrElse { Env() } diff --git a/app/src/main/java/com/topjohnwu/magisk/model/receiver/GeneralReceiver.kt b/app/src/main/java/com/topjohnwu/magisk/model/receiver/GeneralReceiver.kt index f31fa40f1..4c72c992c 100644 --- a/app/src/main/java/com/topjohnwu/magisk/model/receiver/GeneralReceiver.kt +++ b/app/src/main/java/com/topjohnwu/magisk/model/receiver/GeneralReceiver.kt @@ -51,23 +51,14 @@ open class GeneralReceiver : BaseReceiver() { } when (intent.action ?: return) { - Intent.ACTION_REBOOT, Intent.ACTION_BOOT_COMPLETED -> { - val action = intent.getStringExtra("action") - if (action == null) { - // Actual boot completed event - Shell.su("mm_patch_dtbo").submit { - if (it.isSuccess) - Notifications.dtboPatched(context) - } - return - } - when (action) { + Intent.ACTION_REBOOT -> { + when (val action = intent.getStringExtra("action") ?: return) { REQUEST -> { val i = context.intent() - .setAction(action) - .putExtra("socket", intent.getStringExtra("socket")) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - .addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK) + .setAction(action) + .putExtra("socket", intent.getStringExtra("socket")) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK) if (SDK_INT >= 29) { // Android Q does not allow starting activity from background i.startActivityWithRoot() @@ -92,7 +83,7 @@ open class GeneralReceiver : BaseReceiver() { Intent.ACTION_PACKAGE_FULLY_REMOVED -> { val pkg = getPkg(intent) policyDB.delete(pkg).blockingGet() - "magiskhide --rm $pkg".su().blockingGet() + Shell.su("magiskhide --rm $pkg").submit() } Intent.ACTION_LOCALE_CHANGED -> Shortcuts.setup(context) Const.Key.BROADCAST_MANAGER_UPDATE -> { diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/SplashActivity.kt b/app/src/main/java/com/topjohnwu/magisk/ui/SplashActivity.kt index c2c710374..845cb2efb 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/SplashActivity.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/SplashActivity.kt @@ -60,6 +60,11 @@ open class SplashActivity : Activity() { // Setup shortcuts Shortcuts.setup(this) + Shell.su("mm_patch_dtbo").submit { + if (it.isSuccess) + Notifications.dtboPatched(this) + } + DONE = true startActivity(intent().apply { intent?.also { putExtras(it) } }) diff --git a/scripts/emulator.sh b/scripts/emulator.sh index ceb3e8388..a01e0f040 100755 --- a/scripts/emulator.sh +++ b/scripts/emulator.sh @@ -118,3 +118,4 @@ mkdir -p /data/adb/modules 2>/dev/null mkdir /data/adb/post-fs-data.d 2>/dev/null mkdir /data/adb/services.d 2>/dev/null /sbin/magisk --daemon +/sbin/magisk --broadcast-test diff --git a/stub/src/main/AndroidManifest.xml b/stub/src/main/AndroidManifest.xml index 6d3dcb4bd..109e8d1b7 100644 --- a/stub/src/main/AndroidManifest.xml +++ b/stub/src/main/AndroidManifest.xml @@ -1,19 +1,13 @@ - - - - -