我有一个想与手机通信的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()
。