Skip to content

Commit 317d023

Browse files
fix AlwaysAllowMultiInstanceSplit
1 parent 8e06c29 commit 317d023

File tree

2 files changed

+29
-19
lines changed
  • AlwaysAllowMultiInstanceSplit/src/main/java/de/binarynoise/AlwaysAllowMultiInstanceSplit

2 files changed

+29
-19
lines changed

AlwaysAllowMultiInstanceSplit/src/main/java/de/binarynoise/AlwaysAllowMultiInstanceSplit/Hook.kt

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.binarynoise.AlwaysAllowMultiInstanceSplit
22

3+
import android.content.ComponentName
34
import android.content.pm.ActivityInfo
45
import android.os.Build
56
import de.binarynoise.logger.Logger.log
@@ -18,16 +19,19 @@ class Hook : IXposedHookLoadPackage {
1819
when (lpparam.packageName) {
1920
"com.android.systemui" -> {
2021
try {
21-
val method = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) XposedHelpers.findMethodExact(
22-
Class.forName("com.android.wm.shell.common.MultiInstanceHelper", false, lpparam.classLoader),
23-
"supportsMultiInstanceSplit",
24-
String::class.java
25-
)
26-
else XposedHelpers.findMethodExact(
27-
Class.forName("com.android.wm.shell.splitscreen.SplitScreenController", false, lpparam.classLoader),
28-
"supportMultiInstancesSplit",
29-
String::class.java
30-
)
22+
val method = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
23+
XposedHelpers.findMethodExact(
24+
Class.forName("com.android.wm.shell.common.MultiInstanceHelper", false, lpparam.classLoader),
25+
"supportsMultiInstanceSplit",
26+
ComponentName::class.java,
27+
)
28+
} else {
29+
XposedHelpers.findMethodExact(
30+
Class.forName("com.android.wm.shell.splitscreen.SplitScreenController", false, lpparam.classLoader),
31+
"supportMultiInstancesSplit",
32+
ComponentName::class.java,
33+
)
34+
}
3135
XposedBridge.hookMethod(method, XC_MethodReplacement.returnConstant(true))
3236
log("Hooked ${method.declaringClass.name}::${method.name}")
3337
} catch (e: Throwable) {
@@ -36,14 +40,20 @@ class Hook : IXposedHookLoadPackage {
3640
}
3741
"android" -> {
3842
try {
39-
val cls = Class.forName("com.android.server.wm.ActivityStarter", false, lpparam.classLoader)
40-
XposedBridge.hookAllMethods(cls, "executeRequest", object : MethodHook() {
41-
override fun beforeHookedMethod(param: MethodHookParam) {
42-
val request = param.args[0]
43-
val aInfo = XposedHelpers.getObjectField(request, "activityInfo") as ActivityInfo
44-
aInfo.launchMode = ActivityInfo.LAUNCH_MULTIPLE
45-
}
46-
})
43+
val ActivityStarterClass = Class.forName("com.android.server.wm.ActivityStarter", false, lpparam.classLoader)
44+
val ActivityStarterRequestClass = Class.forName(ActivityStarterClass.name + "\$Request", false, lpparam.classLoader)
45+
XposedHelpers.findAndHookMethod(
46+
ActivityStarterClass,
47+
"executeRequest",
48+
ActivityStarterRequestClass,
49+
object : MethodHook() {
50+
override fun beforeHookedMethod(param: MethodHookParam) {
51+
val request = param.args[0]
52+
val aInfo = XposedHelpers.getObjectField(request, "activityInfo") as ActivityInfo
53+
aInfo.launchMode = ActivityInfo.LAUNCH_MULTIPLE
54+
}
55+
},
56+
)
4757
log("Hooked com.android.server.wm.ActivityStarter::executeRequest")
4858
} catch (e: Throwable) {
4959
log("Failed to hook com.android.server.wm.ActivityStarter::executeRequest", e)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ A collection of small Xposed Modules.
66
| Module | Author | Description | Releases |
77
|-|-|-|-|
88
| [AlwaysAllowChargingFeedback](AlwaysAllowChargingFeedback) | [@binarynoise](https://github.com/binarynoise) | Always allow charging feedback, even in DnD mode | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AlwaysAllowChargingFeedback) |
9-
| [AlwaysAllowMultiInstanceSplit](AlwaysAllowMultiInstanceSplit) | [@binarynoise](https://github.com/binarynoise) & [@programminghoch10](https://github.com/programminghoch10) | Allow all apps to be launched twice in a split screen | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AnimationScaleMod) |
9+
| [AlwaysAllowMultiInstanceSplit](AlwaysAllowMultiInstanceSplit) | [@binarynoise](https://github.com/binarynoise) & [@programminghoch10](https://github.com/programminghoch10) | Allow all apps to be launched twice in a split screen | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AlwaysAllowMultiInstanceSplit) |
1010
| [AnimationScaleMod](AnimationScaleMod) | [@programminghoch10](https://github.com/programminghoch10) | Add more animation scale multipliers | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AnimationScaleMod) |
1111
| [AntiBrightnessChange](AntiBrightnessChange) | [@programminghoch10](https://github.com/programminghoch10) | Prevent apps from changing display brightness | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AntiBrightnessChange) [IzzyOnDroid](https://apt.izzysoft.de/fdroid/index/apk/com.programminghoch10.AntiBrightnessChange) |
1212
| [AutomaticAdvancedSettingsExpander](AutomaticAdvancedSettingsExpander) | [@binarynoise](https://github.com/binarynoise) | Automatically expands the advanced settings in the Settings app | [GitHub](https://github.com/binarynoise/XposedModulets/releases?q=AutomaticAdvancedSettingsExpander) [IzzyOnDroid](https://apt.izzysoft.de/fdroid/index/apk/de.binarynoise.AutomaticAdvancedSettingsExpander) |

0 commit comments

Comments
 (0)