我希望将来自NFC读卡器的APDU路由到SIM卡。根据HCE文档,我认为可以通过创建具有相应路由条目的OffHostApduService来实现(我已经这样做了)。
不幸的是,SIM似乎没有收到任何APDU。当直接使用SIM读卡器将SIM连接到我的工作站时,可以使用的SELECT命令返回6a82(文件未找到)。
在LogCat中,我发现了两个有趣的信息:
每次我发送应该路由到SIM的选择命令时,我会得到以下条目:
我认为这是路由设置不正确的线索,因为我认为Android操作系统不应该意识到SIM卡路由处于活动状态,并且发送选择或其他命令到SIM卡时。每次我将手机从读卡器的NFC领域中移开时,都会收到以下错误提示:
我试图追踪这个错误的原因,并找到了文件
我认为错误在于应用程序无法为APDU设置正确的路由,因为驱动程序认为SIM未激活。在我发送命令的那一刻,SIM已经解锁(输入PIN码),但我怀疑这与此无关,因为在使用读卡器之前我不必解锁SIM。
我使用Nexus 5进行测试。有人有经验和/或可将APDU路由到SIM而不是CPU的工作示例吗?
不幸的是,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的工作示例吗?