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