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。 因此,情况3 APDU可以具有最多250个有效负载字节。

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

我发现galaxy s4实际上接收了252个字节。 但连续2个块。 对于长度超过128字节的apdus,它会进入两次processCommandApdu函数。

我自己有一个Galaxy S4,而且能够传输和/或接收最多255个字节的apdus。 我没有尝试过extendedAPDU,但它们应该也能正常工作。

可能是与读卡器(三星Galaxy S4和卡)组合相关的问题来自不同制造商的卡表现不同(在ISO14443标准内)。 恕我直言三星Galaxy S4没有为一些卡提供足够的能量(使用Galaxy S4体验这一点)。

除了使用其他转发器之外,您无能为力。