Android 4.4 hce(基于主机的卡仿真)"processCommandApdu" apdu 长度



我在Nexus 4、Nexus 5和三星Galaxy S4手机上测试了我的Android Java应用程序。在测试中,读写器发送的apdu长度变化最多为252字节。Nexus手机apdu接收成功。另一方面,Galaxy S4手机无法接收超过128字节的apdu。它只接收发送方的252个字节中的前128个字节。

如何确定设备的最大应收APDU大小?

目前没有办法找到最大的应收APDU长度(除了试验和错误)。

关于最大可接收APDU长度,有一个开放的AOSP错误报告(#69233)。这个报告解释了

  1. Nexus 5能够接收总长度为255字节的命令apdu。因此,case 3 APDU最多可以有250个有效载荷字节。

  2. Galaxy S4能够接收总长度为252字节的命令apdu。因此,case 3 APDU最多可以有247个有效负载字节。

我发现galaxy s4实际上接收252字节。但是要分成两个连续的部分。对于大于128字节的apdus,它会进入processCommandApdu函数两次。

我自己有一部Galaxy S4,它能够发送和/或接收高达255字节的apdus。我没有尝试过extendedAPDU,但它们应该也能工作。

可能是与读卡器(三星Galaxy S4和卡)组合有关的问题。不同厂家的卡表现不同(在ISO14443标准内)。恕我直言,三星Galaxy S4不能为某些卡提供足够的能量(我在使用Galaxy S4时就遇到过这种情况)。

你没有办法,除非使用其他的转发器。

最新更新