From a8751388c9a86ae95714a15279994d8aa426a26d Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 13 六月 2025 14:59:02 +0800
Subject: [PATCH] feat(generallibrary): 优化充值功能并添加水价获取- 在 activity_recharge_detail.xml 中移除了不必要的 bold 样式- 在 EditText 中添加了金额输入限制(数字和小数点)- 在 BaseApplication 中添加了水价信息存储 - 在 MainActivity 中实现了延时获取水价的功能- 优化了 RechargeDetailActivity 中的水价检查和使用逻辑 - 在 README.md 中添加了金额格式化和水价获取的最佳实践指南

---
 baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java |   51 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java
index ef74114..cb24575 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcReadHelper.java
@@ -7,6 +7,8 @@
 import android.nfc.tech.MifareClassic;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+
 import com.dayu.baselibrary.bean.BaseManagerToUserCard;
 import com.dayu.baselibrary.bean.BaseUserCardCard;
 import com.dayu.baselibrary.tools.HexUtil;
@@ -29,8 +31,6 @@
     private Tag tag;
     //    private NFCCallback callback;
     private static NativeNfcReadHelper helper;
-
-
 
 
     @Override
@@ -435,9 +435,6 @@
     }
 
 
-
-
-
     public String getCardNumberNoClose() {
         if (tag == null) {
             return "";
@@ -483,13 +480,19 @@
         return "";
     }
 
+    @Override
+    public String getCradTypeAndCardNumber() {
+        return getCradTypeAndCardNumber(1);
+    }
+
+
     /**
      * 鑾峰彇鍗$墖绫诲瀷鍜屽崱鍙�
      *
      * @return
      */
-    @Override
-    public String getCradTypeAndCardNumber() {
+
+    public String getCradTypeAndCardNumber(int sectorIndex) {
 
         MifareClassic mfc = MifareClassic.get(tag);
         if (null != mfc) {
@@ -498,10 +501,18 @@
                 StringBuilder strData = new StringBuilder();
                 //鑾峰彇褰撳墠鍗″彿
                 boolean isOpen = false;
-                for (int i = 0; i < listKeyA.size(); i++) {
-                    if (mfc.authenticateSectorWithKeyA(0, listKeyA.get(i))) {
+                if (!listKeyA.isEmpty()) {
+                    for (int i = 0; i < listKeyA.size(); i++) {
+                        if (mfc.authenticateSectorWithKeyA(0, listKeyA.get(i))) {
+                            isOpen = true;
+                            break;
+                        }
+                    }
+                } else if (!listA_PS.isEmpty()) {
+                    if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(0))) {
                         isOpen = true;
-                        break;
+                    } else if (mfc.authenticateSectorWithKeyA(0, defauleKey)) {
+                        isOpen = true;
                     }
                 }
                 if (isOpen) {
@@ -517,15 +528,23 @@
                     }
                 }
                 //鑾峰彇鍗$墖绫诲瀷
-                for (int i = 0; i < listKeyA.size(); i++) {
-                    if (mfc.authenticateSectorWithKeyA(1, listKeyA.get(i))) {
+                if (!listKeyA.isEmpty()) {
+                    for (int i = 0; i < listKeyA.size(); i++) {
+                        if (mfc.authenticateSectorWithKeyA(sectorIndex, listKeyA.get(i))) {
+                            isOpen = true;
+                            break;
+                        }
+                    }
+                } else if (!listA_PS.isEmpty()) {
+                    if (mfc.authenticateSectorWithKeyA(sectorIndex, listA_PS.get(sectorIndex))) {
                         isOpen = true;
-                        break;
+                    } else if (mfc.authenticateSectorWithKeyA(sectorIndex, defauleKey)) {
+                        isOpen = true;
                     }
                 }
                 if (isOpen) {
-                    int bIndex = mfc.sectorToBlock(1);
-                    byte[] data = mfc.readBlock(bIndex + 0);
+                    int bIndex = mfc.sectorToBlock(sectorIndex);
+                    byte[] data = mfc.readBlock(bIndex + sectorIndex);
                     if (data != null && data.length > 0) {
                         String hex = HexUtil.byteToHex(data[0]);
                         strData.append(hex);
@@ -676,4 +695,6 @@
     }
 
 
+
+
 }

--
Gitblit v1.8.0