左晓为主开发手持机充值管理机
zuoxiao
2025-04-11 040f1aba13b179ff318366680a6346af7fd97795
baselibrary/src/main/java/com/dayu/baselibrary/tools/nfc/NativeNfcWriteHelper.java
@@ -24,6 +24,9 @@
    private static NativeNfcWriteHelper helper;
    public NativeNfcWriteHelper(Intent intent, Activity activity) {
    }
    public void setIntent(Intent intent) {
        this.tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    }
@@ -37,6 +40,7 @@
        if (helper == null) {
            helper = new NativeNfcWriteHelper(intent, activity);
        }
        helper.setIntent(intent);
        return helper;
    }
@@ -48,9 +52,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 +125,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 +172,14 @@
                                }
                            }
                        } else if (listA_PS.size() != 0 && listA_PS.size() > a) {
                            if (mfc.authenticateSectorWithKeyA(0, listA_PS.get(a))) {
                            if (mfc.authenticateSectorWithKeyA(a, defauleKey)){
                                changePasword(a, mfc);
                                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,8 +234,15 @@
                }
            } catch (Exception e) {
                e.printStackTrace();
                if (callBack != null) {
                    callBack.isSusses(false, a + "扇区写卡报错" + e.getMessage());
                }
                return false;
            }
        } else {
            if (callBack != null) {
                callBack.isSusses(false, a + "扇区写卡报错,byte数组大小不为16");
            }
        }
        return false;
    }