From f5180b600511d1871635bd364beb5bdd15f6ae88 Mon Sep 17 00:00:00 2001
From: zuojincheng <lf_zuo@163.com>
Date: 星期三, 26 三月 2025 18:05:07 +0800
Subject: [PATCH] feat(nfc): 优化 NFC写卡功能并添加新方法- 在 BaseNfcWriteHelper 中添加了新的 writeData 方法,增加了 isConnect 参数 - 优化了 NativeNfcWriteHelper 中的 writeData 实现,支持选择性连接 NFC - 更新了 NfcWriteAdapter,支持新的 writeData 方法- 修改了 NfcWreatHelper 中的 writeData 方法,使用新的接口 - 优化了 NfcWreatActivity 中的写卡逻辑

---
 baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
index 612e0b6..c427898 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
@@ -125,6 +125,11 @@
 
     @Override
     public boolean writeData(byte[] str, int a, int b, NFCCallBack callBack) {
+        return writeData(str, a, b, true,null);
+    }
+
+    @Override
+    public boolean writeData(byte[] str, int a, int b, boolean isConnect, NFCCallBack callBack) {
         Log.i("NFCWreatActivity", "writeData: a=" + a + " b=" + b);
         if (str.length == 16) {
             try {
@@ -132,7 +137,9 @@
                 if (null != mfc) {
                     try {
                         //杩炴帴NFC
-                        mfc.connect();
+                        if (isConnect){
+                            mfc.connect();
+                        }
                         //鑾峰彇鎵囧尯鏁伴噺
                         int count = mfc.getSectorCount();
                         //濡傛灉浼犺繘鏉ョ殑鎵囧尯澶т簡鎴栬�呭皬浜嗙洿鎺ラ��鍑烘柟娉�
@@ -165,12 +172,12 @@
                                 }
                             }
                         } else if (listA_PS.size() != 0 && listA_PS.size() > a) {
-                            if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(a))) {
+                            if (mfc.authenticateSectorWithKeyA(a, defauleKey)){
+                                changePasword(a, mfc);
                                 isOpen = true;
-                                if (listKeyA.get(a).equals(defauleKey)) {
-                                    //褰撳墠涓洪粯璁ょ櫧鍗″瘑鐮佹椂鍐欏崱鏃朵慨鏀瑰瘑鐮�
-                                    changePasword(a, mfc);
-                                }
+
+                            }else if (mfc.authenticateSectorWithKeyA(a, listA_PS.get(a))) {
+                                isOpen = true;
                             }
                         }
                         if (isOpen) {
@@ -227,11 +234,15 @@
                 }
             } catch (Exception e) {
                 e.printStackTrace();
-                callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊" + e.getMessage());
+                if (callBack != null) {
+                    callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊" + e.getMessage());
+                }
                 return false;
             }
         } else {
-            callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊锛宐yte鏁扮粍澶у皬涓嶄负16");
+            if (callBack != null) {
+                callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊锛宐yte鏁扮粍澶у皬涓嶄负16");
+            }
         }
         return false;
     }

--
Gitblit v1.8.0