1- package com.wmods.wppenhacer.xposed.features.general ;
2-
3- import androidx.annotation.NonNull;
4-
5- import com.wmods.wppenhacer.xposed.core.Feature;
6- import com.wmods.wppenhacer.xposed.core.devkit.Unobfuscator;
7-
8- import java.util.HashMap;
9-
10- import de.robv.android.xposed.XC_MethodHook;
11- import de.robv.android.xposed.XSharedPreferences;
12- import de.robv.android.xposed.XposedBridge;
13-
14- public class ShareLimit extends Feature {
15- public ShareLimit (ClassLoader loader, XSharedPreferences preferences) {
16- super (loader, preferences);
1+ package com.wmods.wppenhacer.xposed.features.general
2+
3+ import com.wmods.wppenhacer.xposed.core.Feature
4+ import com.wmods.wppenhacer.xposed.core.devkit.Unobfuscator
5+ import de.robv.android.xposed.XC_MethodHook
6+ import de.robv.android.xposed.XSharedPreferences
7+ import de.robv.android.xposed.XposedBridge
8+
9+ class ShareLimit (classLoader : ClassLoader , prefs : XSharedPreferences ) : Feature(classLoader, prefs) {
10+
11+ override fun doHook () {
12+ if (! prefs.getBoolean(" removeforwardlimit" , false )) return
13+ val multiSelectionLimitInfoClass = Unobfuscator .loadMultiSelectionLimitInfoClass(classLoader)
14+ XposedBridge .hookAllConstructors(multiSelectionLimitInfoClass, object : XC_MethodHook () {
15+ override fun beforeHookedMethod (param : MethodHookParam ) {
16+ param.args[0 ] = Int .MAX_VALUE
17+ }
18+ })
1719 }
1820
19- public void doHook() throws Exception {
20- if (! prefs.getBoolean(" removeforwardlimit" , false )) return ;
21- var shareLimitMethod = Unobfuscator .loadShareLimitMethod(classLoader);
22- logDebug(Unobfuscator .getMethodDescriptor(shareLimitMethod));
23- var shareItemField = Unobfuscator .loadShareMapItemField(classLoader);
24- logDebug(Unobfuscator .getFieldDescriptor(shareItemField));
25-
26- XposedBridge .hookMethod(
27- shareLimitMethod,
28- new XC_MethodHook () {
29- private HashMap <Object , Object > fakeMap;
30- private HashMap <Object , Object > mMap;
31-
32- /* *
33- * @noinspection unchecked
34- */
35- @Override
36- protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
37- fakeMap = new HashMap <> ();
38- mMap = (HashMap <Object , Object >) shareItemField.get(param.thisObject);
39- shareItemField.set(param.thisObject, fakeMap);
40- }
41-
42- @Override
43- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
44- mMap.putAll(fakeMap);
45- shareItemField.set(param.thisObject, mMap);
46- fakeMap.clear();
47- }
48- });
49-
50-
51- }
52-
53- @NonNull
54- @Override
55- public String getPluginName() {
56- return " Share Limit" ;
57- }
58- }
21+ override fun getPluginName (): String = " Share Limit"
22+ }
0 commit comments