Android使用基于AID的路由机制将卡模拟模式下的通信调度到特定应用程序(HCE应用程序或SE小应用程序)。这也是NFC论坛设计的主要手段,可以在单个NFC设备上支持多个独立卡仿真应用。
基于AID-路由需要第一命令是一个SELECT(由DF名称/ AID)命令:
00 A4 0400 <Lc> <AID> [<Le>]
这是必要的,以便不同的应用程序之间进行区分。否则,Android将无法将通讯发送到正确的HCE服务。
但是,这也会阻止仿真任何先于成功应用程序选择(例如使用SELECT(通过文件名等)命令选择主文件)的任何内容。如果允许这样做,Android将无法知道哪个HCE应用程序负责处理该命令。因此,不可能托管多个HCE应用程序,这些应用程序都需要在一台设备上安装主文件。因此,我不认为这一点很快就会得到支持。
在其他多平台应用平台上也存在同样的问题。例如,典型的Java Card智能卡也没有主文件。在这些平台上,通常通过允许一个默认选择的应用程序来处理这个问题,该应用程序在第一个SELECT(通过DF名称/ AID)命令之前处理所有通信。人们只能猜测这种机制是否会在未来的Android版本中出现......我不会指望它。
如果根目录设备是一个选项,您可能可以使用像Xposed这样的框架来调整NFC系统服务以将通信调度到某些默认HCE服务。
感谢您的回复。 但POS的处理逻辑很难改变,POS发送第一个命令是00A40000023F00.So Android HCE不会将此命令路由到我的HCE应用 –
也许您可以将您的应用ID更改为3F00(如果允许的话) –
SELECT AID命令是00A404XXXXXX SELECT MF命令是00A40000023F00 因此,将应用程序ID更改为3F00不起作用。 –