From 12fb3fb97f135bbd78b31a06f8451f9b42a2ed6f Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 26 八月 2024 14:23:24 +0800 Subject: [PATCH] 无网络添加提示 --- qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java | 92 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 91 insertions(+), 1 deletions(-) diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java index 4abdceb..5ce38e4 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java +++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/tools/NFCWriteHelper.java @@ -11,6 +11,8 @@ import com.dayu.qiheonlinelibrary.card.UserCard; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; /** * @author zx @@ -70,6 +72,7 @@ int a = 1; try { MifareClassic mfc = MifareClassic.get(tag); + List<byte[]> list = new ArrayList<>(); if (null != mfc) { try { //杩炴帴NFC @@ -96,7 +99,22 @@ //鍐欏崱 mfc.writeBlock(bIndex + b, data); } - return true; + int bIndex = mfc.sectorToBlock(1); + for (int j = 0; j < 3; j++) { + //璇诲彇鏁版嵁 + byte[] data = null; + try { + data = mfc.readBlock(bIndex); + bIndex++; + list.add(data); + } catch (Exception e) { + e.printStackTrace(); + } + } + if (userCard.equlsUserCard(list)) { + return true; + } + return false; } return false; } catch (Exception e) { @@ -241,6 +259,78 @@ } /** + * 鍒濆鍖栧崱 + * + * @return + */ + public boolean initCard() { + try { + MifareClassic mfc = MifareClassic.get(tag); + if (null != mfc) { + try { + //杩炴帴NFC + mfc.connect(); + //鑾峰彇鎵囧尯鏁伴噺 + int count = mfc.getSectorCount(); + byte[] data = new byte[16]; + String initData = "FFFFFFFFFFFFFF078069FFFFFFFFFFFF"; + byte[] initDataBytes = HexUtil.hexToByteArray(initData); + for (int sector = 0; sector < count; sector++) { + //楠岃瘉鎵囧尯瀵嗙爜 + boolean isOpen = mfc.authenticateSectorWithKeyA(sector, defauleKey); + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(sector, companyKey2); + if (isOpen) { + mfc.authenticateSectorWithKeyB(sector, companyKey2); + } + } + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(sector, companyKey); + if (isOpen) { + mfc.authenticateSectorWithKeyB(sector, companyKey); + } + } + if (isOpen) { + //鑾峰彇鍐欑殑鎵囧尯鐨勫潡鐨勬暟閲� + int blockCount = mfc.getBlockCountInSector(sector); + int blockIndex = mfc.sectorToBlock(sector); + for (int block = 0; block < blockCount; block++) { + // 璺宠繃绗� 0 鎵囧尯鐨勭 0 鍧� + if (sector == 0 && block == 0) { + blockIndex++; + continue; + } + + if (block < 3) { + mfc.writeBlock(blockIndex, data); + } else { + mfc.writeBlock(blockIndex, initDataBytes); + } + //鍐欏崱 + blockIndex++; + } + } + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + try { + mfc.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return false; + } + + /** * 杩斿洖鐩戝惉绫� */ public interface NFCCallback { -- Gitblit v1.8.0