我有一个EMV SmartCard Wich我想和我的手机沟通。 通信本身通过ISODEP没有问题,但我无法弄清楚我如何获得ATR。 据我所知,意图应该包含ATR,可以有人告诉我我需要的代码吗?

或者如果是不可能的话,可能有人知道如何使用像答案是ATR的选择,如Select的命令一样温暖重置卡。

有帮助吗?

解决方案

无与伦比的卡没有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键入标签(NfcA)。对于B型标签(NfcB),您可能希望调查 getHiLayerResponse()

其他提示

无与伦比卡确实返回ATR。但是,您无法从当前的Android NFC API获取ATR。Android NFC API仅返回ATR的历史字节。

非接触卡返回ATR的原因: 请注意,ATR是重置7816答案。读者(本例中的NFC电话)使用ISO 7816(T= CL)APDU Exchange与智能卡进行通信,该APDU Exchange通过非接触式接口ISO 14443-4传输。由于在这种情况下有ISO 7816,您将获得ATR。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top