我有一个想与手机通信的EMV智能卡。
通过IsoDep,通信本身可以正常工作,但是我不知道如何获得ATR。
据我所知,意图应该包含ATR,有人可以告诉我我需要的代码吗?

或者,如果这不可能,也许有人知道如何使用SELECT之类的命令对卡进行热复位,答案是ATR。

最佳答案

非接触式卡没有ATR。但是,您可能对ATS(选择的答案)的历史字节感兴趣。您可以通过调用getHistoricalBytes()来检索它们:

Tag tag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));
IsoDep iso = IsoDep.get(tag);
NfcA nfcA = NfcA.get(tag);
if (nfcA == null || iso == null)
   return; // not an IsoDep+NfcA tag
byte[] histBytes = iso.getHistoricalBytes();
...


请记住,这仅适用于ISO 14443 Type A标签(NfcA)。对于B型标签(NfcB),您可能需要调查getHiLayerResponse()

09-05 02:20