From e6370772d7c03d3cd4cbffab52b83bda1e870e35 Mon Sep 17 00:00:00 2001
From: MoonLeeeaf <150461955+MoonLeeeaf@users.noreply.github.com>
Date: Sun, 26 Jan 2025 10:09:39 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E9=95=BF=E6=8C=89=E5=88=86=E4=BA=AB?=
=?UTF-8?q?=E5=BC=B9=E5=87=BA=E5=8A=9F=E8=83=BD=E8=8F=9C=E5=8D=95,=20?=
=?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BD=9C=E5=93=81=E5=88=86=E4=BA=AB=E5=8F=A3?=
=?UTF-8?q?=E4=BB=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 4 +-
.../github/moonleeeaf/fuckmaonemo/Hook.java | 59 ++++++++++++++++++-
app/src/main/res/xml/config.xml | 5 ++
3 files changed, 65 insertions(+), 3 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 07b5b4d..7c478bb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,8 @@ android {
applicationId "io.github.moonleeeaf.fuckmaonemo"
minSdk 21
targetSdk 33
- versionCode 17000
- versionName "1.7.0"
+ versionCode 18000
+ versionName "1.8.0"
vectorDrawables {
useSupportLibrary true
diff --git a/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java b/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java
index 4adfd63..b850e7d 100644
--- a/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java
+++ b/app/src/main/java/io/github/moonleeeaf/fuckmaonemo/Hook.java
@@ -14,6 +14,7 @@ import android.text.Spanned;
import android.util.Pair;
import android.view.Menu;
import android.view.View;
+import android.webkit.CookieManager;
import android.widget.EditText;
import android.widget.PopupMenu;
import android.widget.Toast;
@@ -27,6 +28,7 @@ import de.robv.android.xposed.callbacks.XC_LoadPackage;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.net.Proxy;
+import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -196,6 +198,43 @@ public class Hook implements IXposedHookLoadPackage {
);
});
+ // 劫持分享菜单
+ load("long_press_share_work_to_open_more_menu", () -> {
+ XposedBridge.log("[FuckMaoNemo] 长按作品分享更多菜单");
+ XposedBridge.hookMethod(
+ getMethod(
+ XposedHelpers.findClass("com.codemao.nemo.activity.WorkDetailActivity", classLoader),
+ "onCreate",
+ Bundle.class
+ ),
+ new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam mp) throws Throwable {
+ Activity self = (Activity) mp.thisObject;
+ View v = self.findViewById(
+ XposedHelpers.getStaticIntField(
+ XposedHelpers.findClass("com.codemao.nemo.R$id", classLoader),
+ "ll_share"
+ )
+ );
+
+ long workId = XposedHelpers.getLongField(self, "workId");
+
+ v.setOnLongClickListener((_v) -> {
+ PopupMenu pop = new PopupMenu(self, v);
+ Menu m = pop.getMenu();
+ m.add("获取分享口令").setOnMenuItemClickListener((mm) -> {
+ openWorkShareCodeGetter(workId);
+ return false;
+ });
+ pop.show();
+ return false;
+ });
+ }
+ }
+ );
+ });
+
load("test", () -> {
methodToVoid(
getMethod(
@@ -604,7 +643,7 @@ public class Hook implements IXposedHookLoadPackage {
public interface Callback {
public void onCallback() throws Exception;
}
-
+
public void methodToVoid(Method m) {
XposedBridge.hookMethod(m, new XC_MethodReplacement() {
@Override
@@ -630,6 +669,24 @@ public class Hook implements IXposedHookLoadPackage {
}
}
+ public void openWorkShareCodeGetter(long workId) {
+ try {
+ Context self = getApplication();
+ String cookie = CookieManager.getInstance().getCookie("https://api.codemao.cn");
+ int a = cookie.indexOf(";", cookie.indexOf("Bearer "));
+ String token = cookie.substring(cookie.indexOf("Bearer ") + "Bearer ".length(), a == -1 ? cookie.length() : a - 1);
+
+ // XposedBridge.log("cookie=" + cookie);
+ // XposedBridge.log("token=" + token);
+ self.startActivity(new Intent().setFlags(Intent.FLAG_ACTIVITY_NEW_TASK).setData(Uri.parse("nemo://com.codemao.nemo/openwith?type=5&url=" +
+ URLEncoder.encode("https://moonbcmtools.github.io/CodemaoNemoOneKeyBuildShareCode/?token=" + token + "&workId=" + workId, "utf-8")
+ )));
+ } catch(Exception e) {
+ XposedBridge.log(e);
+ // Toast.makeText(self, "[FuckMaoNemo] " + e, Toast.LENGTH_LONG).show();
+ }
+ }
+
public static class NewestWorksFilter {
private String type;
private String value;
diff --git a/app/src/main/res/xml/config.xml b/app/src/main/res/xml/config.xml
index a64b2f5..be3cd3d 100644
--- a/app/src/main/res/xml/config.xml
+++ b/app/src/main/res/xml/config.xml
@@ -78,6 +78,11 @@
android:title="绕过防沉迷"
android:summary="滞空防沉迷检测方法的调用实现无伤速通破解防沉迷,无需 Player 链接,不支持叽叽猫砸进里面的岛3,不支持内嵌社区网页的防沉迷,那不属于我的能力范围" />
+
+