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

标签 java android nfc smartcard contactless-smartcard

有谁知道如何使用 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/

相关文章:

Java 接口(interface)使用指南——接口(interface)中的 getter 和 setter 是否不好?

android - Android项目库中的类扩展应用程序?

java - com.github.bumptech.glide :glide making app crash

python - 在树莓派上用Python读取NFC标签

java - servlet.PageNotFound : No mapping found for HTTP request with URI in DispatcherServlet

Java返回语句困惑

Java 字符串拆分 : "Ignore" A Split Parameter

Android 纹理看起来不清楚/模糊

c# - 从 NFC-Tag-Reader 事件处理程序更新 UI 非常慢

controller - NFC 前端与 NFC Controller - 有什么区别?