From 8226f232c39359b36aff8a9b0453c2fb48ee4372 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 18 十二月 2023 11:48:53 +0800 Subject: [PATCH] 用户列表分页加载 --- app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java | 67 +++++++++++++++++---------------- 1 files changed, 35 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java b/app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java index 856fc30..120c3eb 100644 --- a/app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java +++ b/app/src/main/java/com/dayu/recharge/tools/NFCWriteHelper.java @@ -5,6 +5,7 @@ import android.nfc.Tag; import android.nfc.tech.MifareClassic; import android.util.Base64; +import android.util.Log; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -29,11 +30,10 @@ private Tag tag; private static NFCWriteHelper helper; - private static int PASSWORD_LENTH = 6; + private static int PASSWORD_LENTH = 12; public NFCWriteHelper(Intent intent) { this.tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); - } /** @@ -58,7 +58,7 @@ public NFCWriteHelper setReadPassword(String str) { if (null != str && (str.length() <= PASSWORD_LENTH)) { for (int i = 0; i < str.length(); i++) { - bytes[i] = (byte) str.charAt(i); + defauleKey[i] = (byte) str.charAt(i); } } return helper; @@ -73,6 +73,9 @@ * @param */ public boolean writeData(byte[] str, int a, int b) { + Log.i("NFCWreatActivity", "writeData: a=" + a + " b=" + b); + //鍐欏崱鏃朵慨鏀规墍鏈夊瘑鐮� +// changePasword(a); if (str.length <= 16) { try { MifareClassic mfc = MifareClassic.get(tag); @@ -93,7 +96,10 @@ return false; } //楠岃瘉鎵囧尯瀵嗙爜 - boolean isOpen = mfc.authenticateSectorWithKeyA(a, bytes); + boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey); + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(a, companyKey); + } if (isOpen) { int bIndex = mfc.sectorToBlock(a); //鍐欏崱 @@ -124,50 +130,46 @@ /** * 淇敼瀵嗙爜 * - * @param password 涔﹀啓瀵嗙爜锛�16涓瓧鑺� * @param a 涔﹀啓鐨勬墖鍖� - * @param callback 杩斿洖鐩戝惉 + * // * @param callback 杩斿洖鐩戝惉 */ - public void changePasword(String password, int a, final NFCWriteHelper.NFCCallback callback) { + public boolean changePasword(int a) { MifareClassic mfc = MifareClassic.get(tag); byte[] data = new byte[16]; if (null != mfc) { try { mfc.connect(); - if (password.length() != PASSWORD_LENTH) { - callback.isSusses(false); - return; - } + int count = mfc.getSectorCount(); - if (a > count - 1 || a < 0) { - callback.isSusses(false); - return; - } - //灏嗗瘑鐮佽浆鎹负keyA - for (int i = 0; i < password.length(); i++) { - data[i] = (byte) password.charAt(i); - } - //灏嗗瘑鐮佽浆鎹负KeyB - for (int i = 0; i < password.length(); i++) { - data[i + password.length() + 4] = (byte) password.charAt(i); - } - //杈撳叆鎺у埗浣� - data[password.length()] = (byte) 0xff; - data[password.length() + 1] = (byte) 0x07; - data[password.length() + 2] = (byte) 0x80; - data[password.length() + 3] = (byte) 0x69; - //楠岃瘉瀵嗙爜 - boolean isOpen = mfc.authenticateSectorWithKeyA(a, bytes); + boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey); + + //楠岃瘉鏄惁鏄粯璁ゅ瘑鐮侊紝褰撻粯璁ゅ瘑鐮佹椂淇敼瀵嗙爜 if (isOpen) { + //灏嗗瘑鐮佽浆鎹负keyA + byte[] dataA = HexUtil.hexToByteArray(companyKeyA); + for (int i = 0; i < dataA.length; i++) { + data[i] = dataA[i]; + } + //杈撳叆鎺у埗浣� + data[6] = (byte) 0xff; + data[7] = (byte) 0x07; + data[8] = (byte) 0x80; + data[9] = (byte) 0x69; + byte[] dataB = HexUtil.hexToByteArray(companyKeyB); + //灏嗗瘑鐮佽浆鎹负KeyB + for (int i = 0; i < dataB.length; i++) { + data[i + 10] = dataB[i]; + } int bIndex = mfc.sectorToBlock(a); int bCount = mfc.getBlockCountInSector(a); //鍐欏埌鎵囧尯鐨勬渶鍚庝竴涓潡 mfc.writeBlock(bIndex + bCount - 1, data); } - callback.isSusses(true); + return true; } catch (Exception e) { e.printStackTrace(); - callback.isSusses(false); + return false; +// callback.isSusses(false); } finally { try { mfc.close(); @@ -176,6 +178,7 @@ } } } + return false; } /** -- Gitblit v1.8.0