安卓/NFC : read ATR from Smartcard (EMV)

标签 android nfc emv

我有一张 EMV 智能卡,我想用它与我的手机进行通信。 通过 IsoDep,通信本身没有问题,但我不知道如何获得 ATR。 据我所知, Intent 应该包含 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 A 类标签 (NfcA)。对于 B 类标签 (NfcB),您可能需要调查 getHiLayerResponse() .

关于安卓/NFC : read ATR from Smartcard (EMV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657028/

相关文章:

icc - 从 EMV 卡读取数据以执行交易

smartcard - 读取EMV卡的公共(public)数据

android - 为个人用户组织 Firebase 数据库,想法?

java - ScrollView 中的大 Canvas /位图或滚动时重绘 Canvas ?什么方法更快,也避免了 java.lang.OutOfMemoryError

android - 应用程序行为取决于 NFC 支持

android - NFC 标签和密码保护和唯一标识符

Android nfcA.connect()、nfcA.transceive()、nfcA.setTimeout() 和 nfcA.getMaxTransceiveLength()

authentication - EMV静态数据认证

android - 打开谷歌搜索页面

android - Kotlin:如何使用扩展功能延迟运行功能