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