如何使用Android NFC API获取智能卡ATR?

时间:2014-09-26 08:13:00

标签: java android nfc smartcard contactless-smartcard

有没有人知道如何使用NFC API获取Android应用程序的智能卡ATR?我使用的卡是非接触式卡。 我有这个代码

szATR =" 3B " + getATRLeString(myTag.getHistoricalBytes())+ "80 01 " + getHexString(myTag.getHistoricalBytes())+""+ getATRXorString(myTag.getHistoricalBytes());

但它会以null作为回复。

1 个答案:

答案 0 :(得分:3)

从技术上讲,NFC标签没有类似ATR的东西。

ATR用于基于联系人的智能卡通信。 ATR主要包含基于联系人的通信所需的数据,例如最大通信速度,保护时间等。所有这些信息都不适用于NFC。 ATR还可以包含所谓的历史字节。

如果您对myTag.getHistoricalBytes()的调用返回null,那么您的NFC标记根本没有任何历史字节要返回。

关于ATR和NFC一般情况:由于许多NFC标签和智能卡使用相同的高级通信协议(ISO7816),因此将NFC功能添加到智能卡读卡器是一种自然的选择。出于与旧软件的兼容性原因,软件和智能卡基础设施需要一些ATR才能工作。因此,每当您在NFC的上下文中看到ATR时,您可以确定它是由驱动程序或读取器生成的假ATR。