我正在尝试使用 Android 的 NFC API 进行原始身份验证(使用收发方法向 MifareClassic 卡发送命令)。但是我不断收到所有 NfcA 收发器调用的 TagLostException。
这是我的代码:
NfcA mfa = NfcA.get(tagFromIntent);
//MifareClassic mfa = MifareClassic.get(tagFromIntent);
//IsoDep isodep = IsoDep.get(tagFromIntent);
mfa.connect();
//manual authenticate
byte[] cmd = new byte[] {0x60, 0x04, 0x00, 0x00};
try {
if(mfa.isConnected()) {
byte[] result = mfa.transceive(cmd);
}
} catch (TagLostException e) {
Log.i("mifaretest", "tag lost again!");
throw e;
} catch (IOException e) {
Log.i("mifaretest", "IOException!");
// No need to deal with, will return false anyway
}
mfa.close();
正如 Google 文档指出的那样:应用程序不得将 EoD (CRC) 附加到有效负载,它将自动计算。我将最后两个字节留空。我还尝试了以下命令:
byte[] cmd = new byte[] {0x60, 0x04};
或
byte[] cmd = new byte[] {0x60, 0x04, 0xD1, 0x3D};
它们都抛出 TagLostException。任何见解将不胜感激。