From 7c80b7073a6b54e0ec9706be03f0fe0c69a5ab61 Mon Sep 17 00:00:00 2001
From: Mars <3361409208a@gmail.com>
Date: Thu, 2 Jul 2026 12:36:08 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20Hook=20=E6=B6=88=E6=81=AF?=
=?UTF-8?q?=E6=8E=A5=E6=94=B6=E4=B8=8E=E6=9C=AC=E5=9C=B0=E8=B0=83=E8=AF=95?=
=?UTF-8?q?=E6=A8=A1=E5=BC=8F=EF=BC=8C=E4=BE=BF=E4=BA=8E=20LSPosed/Telegra?=
=?UTF-8?q?m=20=E8=81=94=E8=B0=83=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
新增 HookMessageReceiver 与通知服务 Hook 上报链路,支持未登录本地监听;补充 build/install 脚本并忽略 platform-tools 与 xposed 构建产物。
---
.gitignore | 3 +
app/src/main/AndroidManifest.xml | 10 ++++
.../smsmessage/ActionConfirmDialog.java | 50 +++++++++++++++--
.../smsmessage/Activity/AppListActivity.java | 11 ++--
.../smsmessage/Activity/BankEditActivity.java | 11 ++--
.../smsmessage/Activity/BankListActivity.java | 11 ++--
.../smsmessage/Activity/MainActivity.java | 22 ++++----
.../Activity/NotificationActivity.java | 13 +++--
.../Activity/PermissionActivity.java | 11 ++--
.../smsmessage/Activity/SettingActivity.java | 11 ++--
.../service/HookMessageReceiver.java | 53 ++++++++++++++++++
.../service/NotificationService.java | 55 +++++++++++++++----
scripts/build-debug.ps1 | 19 +++++++
scripts/install-debug.ps1 | 23 ++++++++
14 files changed, 246 insertions(+), 57 deletions(-)
create mode 100644 app/src/main/java/com/miraclegarden/smsmessage/service/HookMessageReceiver.java
create mode 100644 scripts/build-debug.ps1
create mode 100644 scripts/install-debug.ps1
diff --git a/.gitignore b/.gitignore
index aa724b7..084bdee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,6 @@
.externalNativeBuild
.cxx
local.properties
+gradle-local.properties
+platform-tools/
+xposed-module/build/
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c4b21c4..1a47c54 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -101,6 +101,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/miraclegarden/smsmessage/ActionConfirmDialog.java b/app/src/main/java/com/miraclegarden/smsmessage/ActionConfirmDialog.java
index 0b77b78..d69fc23 100644
--- a/app/src/main/java/com/miraclegarden/smsmessage/ActionConfirmDialog.java
+++ b/app/src/main/java/com/miraclegarden/smsmessage/ActionConfirmDialog.java
@@ -16,6 +16,7 @@ import com.miraclegarden.smsmessage.databinding.DialogActionConfirmBinding;
import com.miraclegarden.smsmessage.model.ApiError;
import com.miraclegarden.smsmessage.model.BankInfo;
import com.miraclegarden.smsmessage.network.ApiService;
+import com.miraclegarden.smsmessage.network.TokenManager;
import java.util.ArrayList;
import java.util.List;
@@ -30,8 +31,10 @@ public class ActionConfirmDialog extends Dialog {
int index;
DialogActionConfirmBinding actionConfirmBinding;
ApiService apiService;
+ TokenManager tokenManager;
List bankList = new ArrayList<>();
BankInfo selectedBank = null;
+ private boolean localMode = false;
public interface OnToActionListener {
void toSumbit(AppInfo appInfo);
@@ -47,6 +50,7 @@ public class ActionConfirmDialog extends Dialog {
this.context = context;
this.appInfo = appInfo;
this.apiService = new ApiService(context);
+ this.tokenManager = TokenManager.getInstance(context);
}
@Override
@@ -59,10 +63,19 @@ public class ActionConfirmDialog extends Dialog {
actionConfirmBinding.tvAppname.setText(appInfo.getAppName());
actionConfirmBinding.tvPackage.setText(appInfo.getPackageName());
- // 加载银行账户列表
- loadBankList();
+ // 未登录时走本地模式,不请求服务器银行账户
+ if (!tokenManager.isLoggedIn()) {
+ setupLocalMode();
+ } else {
+ loadBankList();
+ }
actionConfirmBinding.sumbitTv.setOnClickListener(view -> {
+ if (localMode) {
+ submitLocalMode();
+ return;
+ }
+
if (selectedBank == null) {
Toast.makeText(context, "请选择关联的银行账户", Toast.LENGTH_SHORT).show();
return;
@@ -124,14 +137,43 @@ public class ActionConfirmDialog extends Dialog {
public void onError(ApiError error) {
if (context instanceof android.app.Activity) {
((android.app.Activity) context).runOnUiThread(() -> {
- Toast.makeText(context, "加载银行账户失败: " + error.getMessage(), Toast.LENGTH_LONG).show();
- dismiss();
+ Toast.makeText(context, "无法加载银行账户,已切换本地模式", Toast.LENGTH_SHORT).show();
+ setupLocalMode();
});
}
}
});
}
+ private void setupLocalMode() {
+ localMode = true;
+ selectedBank = null;
+ actionConfirmBinding.spinnerBank.setVisibility(View.GONE);
+ View bankSection = (View) actionConfirmBinding.spinnerBank.getParent();
+ if (bankSection != null) {
+ for (int i = 0; i < ((android.view.ViewGroup) bankSection).getChildCount(); i++) {
+ ((android.view.ViewGroup) bankSection).getChildAt(i).setVisibility(View.GONE);
+ }
+ }
+ }
+
+ private void submitLocalMode() {
+ if (TextUtils.isEmpty(appInfo.getBankInfoId())) {
+ appInfo.setBankInfoId("local:" + appInfo.getPackageName());
+ }
+ if (TextUtils.isEmpty(appInfo.getName())) {
+ appInfo.setName(appInfo.getAppName());
+ }
+ if (TextUtils.isEmpty(appInfo.getCode())) {
+ appInfo.setCode(appInfo.getPackageName());
+ }
+
+ if (onToActionListener != null) {
+ dismiss();
+ onToActionListener.toSumbit(appInfo);
+ }
+ }
+
private void setupSpinner() {
List bankNames = new ArrayList<>();
bankNames.add("请选择银行账户");
diff --git a/app/src/main/java/com/miraclegarden/smsmessage/Activity/AppListActivity.java b/app/src/main/java/com/miraclegarden/smsmessage/Activity/AppListActivity.java
index 63b208e..7537544 100644
--- a/app/src/main/java/com/miraclegarden/smsmessage/Activity/AppListActivity.java
+++ b/app/src/main/java/com/miraclegarden/smsmessage/Activity/AppListActivity.java
@@ -33,11 +33,12 @@ public class AppListActivity extends MiracleGardenActivity {
tokenManager = TokenManager.getInstance(this);
- if (!tokenManager.isLoggedIn()) {
- startActivity(new Intent(this, LoginActivity.class));
- finish();
- return;
- }
+ // 调试用:暂时跳过登录
+// if (!tokenManager.isLoggedIn()) {
+// startActivity(new Intent(this, LoginActivity.class));
+// finish();
+// return;
+// }
initView();
}
@@ -44,11 +45,12 @@ public class MainActivity extends MiracleGardenActivity {
@Override
protected void onResume() {
super.onResume();
- if (!tokenManager.isLoggedIn()) {
- startActivity(new Intent(this, LoginActivity.class));
- finish();
- return;
- }
+ // 调试用:暂时跳过登录
+// if (!tokenManager.isLoggedIn()) {
+// startActivity(new Intent(this, LoginActivity.class));
+// finish();
+// return;
+// }
updatePermissionStatus();
}
diff --git a/app/src/main/java/com/miraclegarden/smsmessage/Activity/NotificationActivity.java b/app/src/main/java/com/miraclegarden/smsmessage/Activity/NotificationActivity.java
index 7f25007..f1b47fc 100644
--- a/app/src/main/java/com/miraclegarden/smsmessage/Activity/NotificationActivity.java
+++ b/app/src/main/java/com/miraclegarden/smsmessage/Activity/NotificationActivity.java
@@ -62,12 +62,13 @@ public class NotificationActivity extends MiracleGardenActivity(this);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
diff --git a/app/src/main/java/com/miraclegarden/smsmessage/Activity/PermissionActivity.java b/app/src/main/java/com/miraclegarden/smsmessage/Activity/PermissionActivity.java
index 34d9d10..1a148a2 100644
--- a/app/src/main/java/com/miraclegarden/smsmessage/Activity/PermissionActivity.java
+++ b/app/src/main/java/com/miraclegarden/smsmessage/Activity/PermissionActivity.java
@@ -29,11 +29,12 @@ public class PermissionActivity extends MiracleGardenActivity