3

当我第一次尝试发送 APDU 命令并收到“超出支持的长度”错误时,我认为这只是 NFC 芯片本身的限制 - 没有办法解决。但是,此站点表明这可能是 Android 操作系统中的软件问题:

许多当前可用的智能手机只能通过 NFC 传输 261 字节[2],而无需对操作系统进行重大修改。

有谁知道更多关于如何解决这个问题以及修改的“主要”程度?

另外,您是否有列表,哪些手机支持扩展长度 APDU?如果没有,我们可能应该开始一个,因为你在谷歌上真的找不到太多。

我知道三星 Galaxy Note II 支持它,而三星 Galaxy S3、Nexus 5 和 Galaxy Nexus 不支持。

4

2 回答 2

2

看到这个网站: https ://code.google.com/p/android/issues/detail?id=76598

你必须做的:

  • 下载安卓源
  • 在 NativeNfcManager.java 的行中将“261”更改为“2462”(如上面链接的站点所示)
  • 构建安卓
  • 在手机上刷入修改后的 Android 版本

可以在此处找到为 Nexus 5 构建 Android 的教程:http: //nosemaj.org/howto-build-android-kitkat-nexus-5

这适用于智能手机的读卡器模式,我还不知道如何让它适用于卡模拟模式。

于 2014-10-27T11:08:44.473 回答
1

更好/更容易/更便携的解决方案是仅发送 261 字节(或更少)并返回 ISO7816-4 状态代码 SW1-SW2 = 0x61xx,其中 xx 告诉您仍然可用的数据字节数。阅读器将发送 ISO7816-4 命令“GET RESPONSE”以请求剩余字节。

例如,如果您想从 Android HCE 发送 300 个字节,那么您将开始回复:

  1. HCE:sendResponseApdu({ 250 first bytes of data + 0x6132 })(0x32 表示剩余 50 个字节)
  2. NFC 读卡器应发送:GET RESPONSE
  3. HCE:sendResponseApdu({ last 50 bytes of data + 0x9000 })
于 2016-12-03T20:20:13.383 回答