【发布时间】:2014-01-14 09:52:27
【问题描述】:
我想将从 NFC 读取器获取的 APDU 路由到 SIM 卡。根据HCE documentation,我认为只需使用相应的路由条目创建一个 OffHostApduService (我做了)就可以了。
遗憾的是,SIM 卡似乎没有获得任何 APDU。当 SIM 卡通过 SIM 读取器直接连接到我的工作站时起作用的 SELECT 命令返回 6a82(找不到文件)。
在 LogCat 中我发现了两条有趣的信息:
每次我发出一个应该路由到 SIM 卡的选择命令时,我都会得到这些条目:
01-14 10:44:18.501: D/BrcmNfcJni(1009): RoutingManager::stackCallback: event=0x17
01-14 10:44:18.501: D/BrcmNfcJni(1009): RoutingManager::stackCallback: NFA_CE_DATA_EVT; h=0x302; data len=12
01-14 10:44:18.501: D/HostEmulationManager(1009): notifyHostEmulationData
我认为这是路由设置不正确的线索,因为我认为 Android 操作系统不应该知道何时路由到 SIM 卡是活动的,并且选择或其他命令被发送到 SIM 卡。
每次我将手机从阅读器的 NFC 区域中取出时,我都会收到以下错误:
01-14 10:46:48.791: E/BrcmNfcNfa(1009): UICC[0x0] is not activated
我试图追踪这个错误的原因并找到了文件external/libnfc-nci/src/nfa/ce/nfa_ce_act.chere,它似乎属于 Broadcom NFC 驱动程序。
我认为错误在于应用程序无法为 APDU 设置正确的路由,因为驱动程序认为 SIM 未激活。在我发送命令的那一刻,SIM 被解锁(PIN 输入),但我怀疑这与它有什么关系,因为在读卡器中使用它之前我不必解锁 SIM。
我使用 Nexus 5 进行测试。有没有人有经验和/或一个可以将 APDU 路由到 SIM 而不是 CPU 的工作示例?
【问题讨论】:
-
您好,我正在解决同样的问题,但是我不知道如何将 apdu 路由到 sim 可以解释您在我提出的问题上使用的方法。我正在搜索如何覆盖 offHostApduService 的 onBind 方法。非常感谢
标签: android nfc android-4.4-kitkat apdu hce