|
27 | 27 | import org.json.JSONObject; |
28 | 28 | import org.luckypray.dexkit.query.enums.StringMatchType; |
29 | 29 |
|
| 30 | +import java.lang.reflect.Field; |
| 31 | +import java.lang.reflect.Method; |
30 | 32 | import java.lang.reflect.Modifier; |
31 | 33 | import java.util.ArrayList; |
32 | 34 | import java.util.HashMap; |
@@ -85,8 +87,6 @@ public void doHook() throws Exception { |
85 | 87 | propsBoolean.put(4023, newSettings); |
86 | 88 | propsInteger.put(18564, newSettings ? 1 : 0); |
87 | 89 |
|
88 | | - if (disableMetaAI) |
89 | | - propsBoolean.put(8013, Objects.equals(filterChats, "2")); |
90 | 90 | propsBoolean.put(2889, floatingMenu); |
91 | 91 |
|
92 | 92 | // new text composer |
@@ -186,7 +186,7 @@ public void doHook() throws Exception { |
186 | 186 |
|
187 | 187 |
|
188 | 188 | hookProps(); |
189 | | - hookMenuOptions(filterChats); |
| 189 | + hookSearchbar(filterChats); |
190 | 190 |
|
191 | 191 | if (disable_sensor_proximity) { |
192 | 192 | disableSensorProximity(); |
@@ -602,7 +602,48 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable { |
602 | 602 | }); |
603 | 603 | } |
604 | 604 |
|
605 | | - private void hookMenuOptions(String filterChats) { |
| 605 | + private void hookSearchbar(String filterChats) throws Exception { |
| 606 | + Method searchbar = Unobfuscator.loadViewAddSearchBarMethod(classLoader); |
| 607 | + XposedBridge.hookMethod(searchbar, new XC_MethodHook() { |
| 608 | + @Override |
| 609 | + protected void beforeHookedMethod(MethodHookParam param) throws Throwable { |
| 610 | + if (!Objects.equals(filterChats, "2")) { |
| 611 | + param.setResult(null); |
| 612 | + } |
| 613 | + } |
| 614 | + }); |
| 615 | + |
| 616 | + Method addSeachBar = Unobfuscator.loadAddOptionSearchBarMethod(classLoader); |
| 617 | + |
| 618 | + XposedBridge.hookMethod(addSeachBar, new XC_MethodHook() { |
| 619 | + private Object homeActivity; |
| 620 | + private Field pageIdField; |
| 621 | + private int originPageId; |
| 622 | + |
| 623 | + @Override |
| 624 | + protected void beforeHookedMethod(MethodHookParam param) throws Throwable { |
| 625 | + if (!Objects.equals(filterChats, "1")) |
| 626 | + return; |
| 627 | + homeActivity = param.thisObject; |
| 628 | + if (Modifier.isStatic(param.method.getModifiers())) { |
| 629 | + homeActivity = param.args[0]; |
| 630 | + } |
| 631 | + pageIdField = XposedHelpers.findField(homeActivity.getClass(), "A01"); |
| 632 | + originPageId = 0; |
| 633 | + if (pageIdField.getType() == int.class) { |
| 634 | + originPageId = pageIdField.getInt(homeActivity); |
| 635 | + pageIdField.setInt(homeActivity, 1); |
| 636 | + } |
| 637 | + } |
| 638 | + |
| 639 | + @Override |
| 640 | + protected void afterHookedMethod(MethodHookParam param) throws Throwable { |
| 641 | + if (originPageId != 0) { |
| 642 | + pageIdField.setInt(homeActivity, originPageId); |
| 643 | + } |
| 644 | + } |
| 645 | + }); |
| 646 | + |
606 | 647 | XposedHelpers.findAndHookMethod(WppCore.getHomeActivityClass(classLoader), "onPrepareOptionsMenu", Menu.class, new XC_MethodHook() { |
607 | 648 | @Override |
608 | 649 | protected void afterHookedMethod(MethodHookParam param) throws Throwable { |
|
0 commit comments