左晓为主开发手持机充值管理机
zuoxiao
2 天以前 4ceacd9e21e09989287e8dc4e526d182091af282
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);
                    // 验证扇区密码