添加 Hook 消息接收与本地调试模式,便于 LSPosed/Telegram 联调。
新增 HookMessageReceiver 与通知服务 Hook 上报链路,支持未登录本地监听;补充 build/install 脚本并忽略 platform-tools 与 xposed 构建产物。
This commit is contained in:
@@ -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<BankInfo> 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<String> bankNames = new ArrayList<>();
|
||||
bankNames.add("请选择银行账户");
|
||||
|
||||
Reference in New Issue
Block a user