From b8ed2b19e0aaf3c357e2f601d8304acdc525f4f9 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 25 四月 2025 16:54:02 +0800
Subject: [PATCH] refactor(nfc): 优化 NFC 读卡工具类

---
 baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java |   52 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 39 insertions(+), 13 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 525b5aa..22349c3 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
@@ -9,6 +9,7 @@
 
 import com.dayu.baselibrary.bean.BaseUserCardCard;
 import com.dayu.baselibrary.tools.HexUtil;
+import com.tencent.bugly.crashreport.CrashReport;
 
 import java.io.IOException;
 
@@ -23,7 +24,8 @@
 
     private static NativeNfcWriteHelper helper;
 
-    public NativeNfcWriteHelper(Intent intent, Activity activity) {
+
+    public void setIntent(Intent intent) {
         this.tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
     }
 
@@ -35,8 +37,9 @@
      */
     public static NativeNfcWriteHelper getInstence(Intent intent, Activity activity) {
         if (helper == null) {
-            helper = new NativeNfcWriteHelper(intent, activity);
+            helper = new NativeNfcWriteHelper();
         }
+        helper.setIntent(intent);
         return helper;
     }
 
@@ -48,9 +51,9 @@
      * @param
      */
     @Override
-    public boolean writeUserData(BaseUserCardCard userCard) {
+    public boolean writeUserData(BaseUserCardCard userCard, int sector) {
         if (userCard != null) {
-            int a = 1;
+            int a = sector;
             try {
                 MifareClassic mfc = MifareClassic.get(tag);
                 if (null != mfc) {
@@ -121,14 +124,21 @@
 
     @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) {
+        if (str.length == 16) {
             try {
                 MifareClassic mfc = MifareClassic.get(tag);
                 if (null != mfc) {
                     try {
                         //杩炴帴NFC
-                        mfc.connect();
+                        if (isConnect) {
+                            mfc.connect();
+                        }
                         //鑾峰彇鎵囧尯鏁伴噺
                         int count = mfc.getSectorCount();
                         //濡傛灉浼犺繘鏉ョ殑鎵囧尯澶т簡鎴栬�呭皬浜嗙洿鎺ラ��鍑烘柟娉�
@@ -161,16 +171,13 @@
                                 }
                             }
                         } else if (listA_PS.size() != 0 && listA_PS.size() > a) {
-                            if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(a))) {
+                            if (mfc.authenticateSectorWithKeyA(a, defauleKey)) {
                                 isOpen = true;
-                                if (listKeyA.get(a).equals(defauleKey)) {
-                                    //褰撳墠涓洪粯璁ょ櫧鍗″瘑鐮佹椂鍐欏崱鏃朵慨鏀瑰瘑鐮�
-                                    changePasword(a, mfc);
-                                }
+
+                            } else if (mfc.authenticateSectorWithKeyA(a, listA_PS.get(a))) {
+                                isOpen = true;
                             }
                         }
-
-
                         if (isOpen) {
                             int bIndex = mfc.sectorToBlock(a);
                             //鍐欏崱
@@ -225,7 +232,14 @@
                 }
             } catch (Exception e) {
                 e.printStackTrace();
+                if (callBack != null) {
+                    callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊" + e.getMessage());
+                }
                 return false;
+            }
+        } else {
+            if (callBack != null) {
+                callBack.isSusses(false, a + "鎵囧尯鍐欏崱鎶ラ敊锛宐yte鏁扮粍澶у皬涓嶄负16");
             }
         }
         return false;
@@ -272,6 +286,18 @@
         return false;
     }
 
+
+    public boolean changePasword(int a,byte[] passWord, MifareClassic mfc) {
+        try {
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            CrashReport.postCatchedException(e);
+        }
+        return false;
+    }
+
     /**
      * 鍒濆鍖栧崱
      *

--
Gitblit v1.8.0