@@ -19,35 +19,62 @@ class MainHook : IXposedHookLoadPackage {
1919 }
2020
2121 private fun onAppHooked (lpparam : LoadPackageParam ) {
22- installHook(" RecentTasks.isVisibleRecentTask" ) {
22+ val visibleRecentTaskHook = object : XC_MethodHook () {
23+ override fun beforeHookedMethod (param : MethodHookParam ) {
24+ if (shouldRemoveTask(param.args[0 ])) {
25+ param.result = false
26+ }
27+ }
28+ }
29+
30+ installHook(" RecentTasks.isVisibleRecentTask(Task)" ) {
2331 findAndHookMethod(
2432 " com.android.server.wm.RecentTasks" ,
2533 lpparam.classLoader,
2634 " isVisibleRecentTask" ,
2735 " com.android.server.wm.Task" ,
28- object : XC_MethodHook () {
29- override fun beforeHookedMethod (param : MethodHookParam ) {
30- if (shouldRemoveTask(param.args[0 ])) {
31- param.result = false
32- }
33- }
34- }
36+ visibleRecentTaskHook
37+ )
38+ }
39+
40+ // Vivo and some OEM ROMs call the two-arg overload directly from getRecentTasksImpl.
41+ installHook(" RecentTasks.isVisibleRecentTask(Task,boolean)" ) {
42+ findAndHookMethod(
43+ " com.android.server.wm.RecentTasks" ,
44+ lpparam.classLoader,
45+ " isVisibleRecentTask" ,
46+ " com.android.server.wm.Task" ,
47+ Boolean ::class .javaPrimitiveType,
48+ visibleRecentTaskHook
3549 )
3650 }
3751
52+ val snapshotModeHook = object : XC_MethodHook () {
53+ override fun beforeHookedMethod (param : MethodHookParam ) {
54+ if (shouldHideTaskContent(param.args[0 ])) {
55+ param.result = SNAPSHOT_MODE_APP_THEME
56+ }
57+ }
58+ }
59+
3860 installHook(" TaskSnapshotController.getSnapshotMode" ) {
3961 findAndHookMethod(
4062 " com.android.server.wm.TaskSnapshotController" ,
4163 lpparam.classLoader,
4264 " getSnapshotMode" ,
4365 " com.android.server.wm.Task" ,
44- object : XC_MethodHook () {
45- override fun beforeHookedMethod (param : MethodHookParam ) {
46- if (shouldHideTaskContent(param.args[0 ])) {
47- param.result = SNAPSHOT_MODE_APP_THEME
48- }
49- }
50- }
66+ snapshotModeHook
67+ )
68+ }
69+
70+ // getSnapshotMode may live on the parent class on some ROMs.
71+ installHook(" AbsAppSnapshotController.getSnapshotMode" ) {
72+ findAndHookMethod(
73+ " com.android.server.wm.AbsAppSnapshotController" ,
74+ lpparam.classLoader,
75+ " getSnapshotMode" ,
76+ " com.android.server.wm.Task" ,
77+ snapshotModeHook
5178 )
5279 }
5380
@@ -90,8 +117,7 @@ class MainHook : IXposedHookLoadPackage {
90117 hookInstaller()
91118 XposedBridge .log(" HideRecent: hook installed: $name " )
92119 } catch (t: Throwable ) {
93- XposedBridge .log(" HideRecent: hook FAILED: $name " )
94- XposedBridge .log(t)
120+ XposedBridge .log(" HideRecent: hook skipped ($name ): ${t.message} " )
95121 }
96122 }
97123
0 commit comments