有谁知道如何使用 NFC API 获取 Android 应用程序的智能卡 ATR?我使用的卡是非接触式卡。 我有这个代码
szATR =" 3B " + getATRLeString(myTag.getHistoricalBytes())+ "80 01 " + getHexString(myTag.getHistoricalBytes())+""+ getATRXorString(myTag.getHistoricalBytes());
但它返回 null
作为响应。
最佳答案
从技术上讲,NFC 标签没有 ATR 之类的东西。
ATR 用于基于接触式的智能卡通信。 ATR主要包含基于接触的通信所需的数据,例如最大通信速度、保护时间等。所有这些信息不适用于NFC。 ATR 还可能包含所谓的历史字节。
如果您对 myTag.getHistoricalBytes() 的调用返回 null,则您的 NFC 标签根本没有任何历史字节可返回。
关于 ATR 和 NFC 一般情况:由于许多 NFC 标签和智能卡都使用相同的高级通信协议(protocol) (ISO7816),因此向智能卡读卡器添加 NFC 功能是一个自然的选择。出于与旧软件的兼容性原因,软件和智能卡基础设施需要一些 ATR 才能工作。因此,每当您在 NFC 环境中看到 ATR 时,您都可以确定它是由驱动程序或读取器生成的假 ATR。
关于java - 如何使用Android NFC API获取智能卡ATR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26054975/