From c0538000f28bc68f11bfe118cb5dd7dfaed09911 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期日, 14 七月 2024 09:23:43 +0800
Subject: [PATCH] 修复管理卡为null的bug,修复写卡失败的后提示成功的bug
---
qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/tools/NfcReadHelper.java | 156 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 138 insertions(+), 18 deletions(-)
diff --git a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/tools/NfcReadHelper.java b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/tools/NfcReadHelper.java
index 0ff1ffe..aecd0a4 100644
--- a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/tools/NfcReadHelper.java
+++ b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/tools/NfcReadHelper.java
@@ -8,12 +8,14 @@
import android.util.Log;
import com.dayu.baselibrary.tools.HexUtil;
+import com.dayu.baselibrary.utils.BaseCommon;
import com.dayu.qihealonelibrary.card.UserCard;
-import com.dayu.qihealonelibrary.utils.MyCommon;
+import com.dayu.qihealonelibrary.utils.CardCommon;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -113,13 +115,76 @@
return null;
}
- public String getCradType() {
+ /**
+ * 鑾峰彇鍗″彿
+ *
+ * @return
+ */
+ public String getCardNumber() {
+ MifareClassic mfc = MifareClassic.get(tag);
+ if (null != mfc) {
+ try {
+ mfc.connect();
+ //鑾峰彇褰撳墠鍗″彿
+ boolean isOpen = mfc.authenticateSectorWithKeyA(0, defauleKey);
+ if (!isOpen) {
+ isOpen = mfc.authenticateSectorWithKeyA(0, companyKey);
+ }
+ if (isOpen) {
+ int bIndex = mfc.sectorToBlock(0);
+ byte[] data = mfc.readBlock(bIndex + 0);
+ if (data != null && data.length > 0) {
+ String hex = HexUtil.bytesToHex(Arrays.copyOfRange(data, 0, 4));
+// hex = HexUtil.spaceHex(hex);
+// hex = HexUtil.HighLowHex(hex);
+ Log.i("NFCWreatActivity", "hex===" + hex);
+ return hex.toUpperCase();
+ }
+ }
+
+ } catch (IOException e) {
+ return BaseCommon.CARD_TYPE_ERROR1;
+ } finally {
+ try {
+ mfc.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return "";
+ }
+
+
+ /**
+ * 鑾峰彇鍗$墖绫诲瀷鍜屽崱鍙�
+ *
+ * @return
+ */
+ public String getCradTypeAndCardNumber() {
MifareClassic mfc = MifareClassic.get(tag);
if (null != mfc) {
try {
mfc.connect();
- boolean isOpen = mfc.authenticateSectorWithKeyA(1, defauleKey);
+ StringBuilder strData = new StringBuilder();
+ //鑾峰彇褰撳墠鍗″彿
+ boolean isOpen = mfc.authenticateSectorWithKeyA(0, defauleKey);
+ if (!isOpen) {
+ isOpen = mfc.authenticateSectorWithKeyA(0, companyKey);
+ }
+ if (isOpen) {
+ int bIndex = mfc.sectorToBlock(0);
+ byte[] data = mfc.readBlock(bIndex + 0);
+ if (data != null && data.length > 0) {
+ String hex = HexUtil.bytesToHex(Arrays.copyOfRange(data, 0, 4));
+ strData.append(hex);
+ strData.append(",");
+ Log.i("NFCWreatActivity", "hex===" + hex);
+ }
+ }
+ //鑾峰彇鍗$墖绫诲瀷
+ isOpen = mfc.authenticateSectorWithKeyA(1, defauleKey);
if (!isOpen) {
isOpen = mfc.authenticateSectorWithKeyA(1, companyKey);
}
@@ -128,16 +193,16 @@
byte[] data = mfc.readBlock(bIndex + 0);
if (data != null && data.length > 0) {
String hex = HexUtil.byteToHex(data[0]);
+ strData.append(hex);
Log.i("NFCWreatActivity", "hex===" + hex);
- return hex;
+ return strData.toString().toUpperCase();
}
-
} else {
Log.i("NFCWreatActivity", "isOpen===" + isOpen);
- return "-1";
+ return BaseCommon.CARD_TYPE_ERROR2;
}
} catch (IOException e) {
- return "-1";
+ return BaseCommon.CARD_TYPE_ERROR1;
} finally {
try {
mfc.close();
@@ -198,13 +263,13 @@
if (flag) {
callback.callBack(map);
} else {
- callback.error(MyCommon.ERROR);
+ callback.error(CardCommon.ERROR);
}
} catch (IOException e) {
- callback.error(MyCommon.ERROR_MOVE);
+ callback.error(CardCommon.ERROR_MOVE);
e.printStackTrace();
} catch (Exception e) {
- callback.error(MyCommon.ERROR);
+ callback.error(CardCommon.ERROR);
e.printStackTrace();
} finally {
try {
@@ -216,6 +281,61 @@
}
}
+
+ public List<byte[]> getOnesectorData() {
+ MifareClassic mfc = null;
+ try {
+ mfc = MifareClassic.get(tag);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ List<byte[]> list = new ArrayList<>();
+ if (null != mfc) {
+ try {
+ //閾炬帴NFC
+ mfc.connect();
+ //鐢ㄤ簬鍒ゆ柇鏃跺�欐湁鍐呭璇诲彇鍑烘潵
+ boolean flag = false;
+
+ //楠岃瘉鎵囧尯瀵嗙爜锛屽惁鍒欎細鎶ラ敊锛堥摼鎺ュけ璐ラ敊璇級
+ boolean isOpen = mfc.authenticateSectorWithKeyA(1, companyKey);
+ if (!isOpen) {
+ isOpen = mfc.authenticateSectorWithKeyA(1, defauleKey);
+ }
+ if (isOpen) {
+ //鑾峰彇鎵囧尯閲岄潰鍧楃殑鏁伴噺
+ int bCount = mfc.getBlockCountInSector(1);
+ //鑾峰彇鎵囧尯绗竴涓潡瀵瑰簲鑺墖瀛樺偍鍣ㄧ殑浣嶇疆锛堟垜鏄繖鏍风悊瑙g殑锛屽洜涓虹0鎵囧尯鐨勮繖涓�兼槸4鑰屼笉鏄�0锛�
+ int bIndex = mfc.sectorToBlock(1);
+ //String data1 = "";
+ for (int j = 0; j < bCount; j++) {
+ //璇诲彇鏁版嵁
+ byte[] data = null;
+ try {
+ data = mfc.readBlock(bIndex);
+ bIndex++;
+ list.add(data);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ mfc.close();
+ return list;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return null;
+ }
/**
* 鑾峰彇1鎵囧尯淇℃伅
@@ -265,13 +385,13 @@
if (flag) {
callback.callBack(list);
} else {
- callback.error(MyCommon.ERROR);
+ callback.error(CardCommon.ERROR);
}
} catch (IOException e) {
- callback.error(MyCommon.ERROR_MOVE);
+ callback.error(CardCommon.ERROR_MOVE);
e.printStackTrace();
} catch (Exception e) {
- callback.error(MyCommon.ERROR);
+ callback.error(CardCommon.ERROR);
e.printStackTrace();
} finally {
@@ -303,12 +423,12 @@
mfc.connect();
int count = mfc.getSectorCount();
if (a < 0 || a > count - 1) {
- callback.error(MyCommon.ERROR);
+ callback.error(CardCommon.ERROR);
return;
}
int bCount = mfc.getBlockCountInSector(a);
if (b < 0 || b > bCount - 1) {
- callback.error(MyCommon.ERROR);
+ callback.error(CardCommon.ERROR);
return;
}
@@ -337,13 +457,13 @@
byte[] data = mfc.readBlock(bIndex + b);
callback.callBack(data);
} else {
- callback.error(MyCommon.ERROR);
+ callback.error(CardCommon.ERROR);
}
} catch (IOException e) {
- callback.error(MyCommon.ERROR_MOVE);
+ callback.error(CardCommon.ERROR_MOVE);
e.printStackTrace();
} catch (Exception e) {
- callback.error(MyCommon.ERROR);
+ callback.error(CardCommon.ERROR);
} finally {
try {
mfc.close();
--
Gitblit v1.8.0