2016-04-25 157 views
1

我们正在开发基于Android HCE的应用程序。我们发现HCE使用基于AID的机制将通信路由到特定的应用程序。这意味着如果我想触发我的应用程序,第一个命令必须是一个SELECT by name命令。Android HCE不支持select MF命令?

这是对传输域的一个很大的限制。在传输中,许多POS不会发送SELECT by Name命令作为第一条命令。相反,他们会发送一个SELECT MF(00A40000023F00)命令作为第一个命令。所以HCE在这种情况下无法工作。

有没有计划添加默认选择功能?或者我们有其他的解决方案来支持这个用例吗?

回答

1

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服务。

-1

对于运输,Visa使用其应用程序qVSDC应用程序作为离线解决方案。它提供了用于离线数据验证的特定公钥,以限制交通运输中的这些交易。因此,对于Visa而言,默认选择是A0000000031010,而不是用于运输的特定AID。但Visa提供多种AID支持,意味着您可以开发2.应用程序以用于交通。 您必须对您的应用程序进行个性化设置才能响应特定的“选择AID”命令。

+0

感谢您的回复。 但POS的处理逻辑很难改变,POS发送第一个命令是00A40000023F00.So Android HCE不会将此命令路由到我的HCE应用 –

+0

也许您可以将您的应用ID更改为3F00(如果允许的话) –

+0

SELECT AID命令是00A404XXXXXX SELECT MF命令是00A40000023F00 因此,将应用程序ID更改为3F00不起作用。 –