From 4ceacd9e21e09989287e8dc4e526d182091af282 Mon Sep 17 00:00:00 2001 From: zuoxiao <lf_zuo@163.com> Date: 星期四, 26 六月 2025 13:39:52 +0800 Subject: [PATCH] feat(nfc): 优化 NFC卡片处理流程 --- baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 46 insertions(+), 12 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 1d89f03..30068ec 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,14 +125,24 @@ mfc.connect(); // 楠岃瘉鎵囧尯瀵嗙爜 boolean isOpen = false; - for (int i = 0; i < listKeyA.size(); i++) { - if (mfc.authenticateSectorWithKeyA(a, listKeyA.get(i))) { - isOpen = true; - if (listKeyA.get(i).equals(defauleKey)) { - // 褰撳墠涓洪粯璁ょ櫧鍗″瘑鐮佹椂鍐欏崱鏃朵慨鏀瑰瘑鐮� - changePasword(a, mfc); + + if (listKeyA.size() != 0) { + for (int i = 0; i < listKeyA.size(); i++) { + if (mfc.authenticateSectorWithKeyA(a, listKeyA.get(i))) { + isOpen = true; + if (listKeyA.get(i).equals(defauleKey)) { + // 褰撳墠涓洪粯璁ょ櫧鍗″瘑鐮佹椂鍐欏崱鏃朵慨鏀瑰瘑鐮� + changePasword(a, mfc); + } + break; } - break; + } + } else if (listA_PS.size() != 0 && listA_PS.size() > a) { + if (mfc.authenticateSectorWithKeyA(a, defauleKey)) { + isOpen = true; + + } else if (mfc.authenticateSectorWithKeyA(a, listA_PS.get(a))) { + isOpen = true; } } if (isOpen) { @@ -239,7 +249,7 @@ boolean isOpen = false; if (listKeyA.size() != 0) { for (int i = 0; i < listKeyA.size(); i++) { - if (mfc.authenticateSectorWithKeyA(0, listKeyA.get(i))) { + if (mfc.authenticateSectorWithKeyA(a, listKeyA.get(i))) { isOpen = true; if (listKeyA.get(i).equals(defauleKey)) { // 褰撳墠涓洪粯璁ょ櫧鍗″瘑鐮佹椂鍐欏崱鏃朵慨鏀瑰瘑鐮� @@ -326,7 +336,6 @@ /** * 淇敼瀵嗙爜 * - * @param 涔﹀啓鐨勬墖鍖� * @param passWord 瀵嗙爜 * @return */ @@ -347,10 +356,35 @@ } try { - // 杩炴帴NFC - if (isConnect) { - mfc.connect(); + // 杩炴帴NFC - 纭繚鎬绘槸寤虹珛杩炴帴锛屽鍔犻噸璇曟満鍒� + int retryCount = 3; + boolean connected = false; + while (retryCount > 0 && !connected) { + try { + if (!mfc.isConnected()) { + mfc.connect(); + } + connected = mfc.isConnected(); + if (!connected) { + Thread.sleep(100); // 鐭殏绛夊緟鍚庨噸璇� + retryCount--; + } + } catch (Exception e) { + retryCount--; + if (retryCount <= 0) { + throw e; + } + Thread.sleep(100); + } } + + if (!connected) { + if (callBack != null) { + callBack.isSusses(false, "NFC杩炴帴澶辫触锛岃閲嶆柊闈犺繎鍗$墖"); + } + return false; + } + for (int i = 0; i < passWord.size(); i++) { byte[] passWordItem = passWord.get(i); // 楠岃瘉鎵囧尯瀵嗙爜 -- Gitblit v1.8.0