让 HCE 应用程序优先于其他 NFC 标签,以便 HCE 成为唯一可读的 tag/first 被读取

Give HCE app priority over other NFC tags so that HCE becomes the only readable tag/first to be read

我创建了一个 Android 应用程序,它使用主机卡模拟来模拟非接触式智能卡。现在,在真正的智能卡和应用程序都接近 reader 的情况下,我想用我的 HCE 应用程序完全隐藏智能卡标签,只有应用程序回答 reader 而即使距离相等且适合检测两个标签,也不会检测到智能卡。

有办法实现吗?如果没有,有没有办法至少让应用程序始终先回答而不是智能卡?

不,那不可能。

一般而言,标签不能直接影响 reader 侧的分离和 selection 过程。由 reader(软件)枚举所有标签和 select 用于通信的特定 tag/contactless 智能卡。因此,HCE 应用程序无法控制此机制。

实际上 reader 应用程序以不同的方式处理多个标签的情况:

  • A reader 可能只是枚举并且 select 只是一个标签。例如,对于 NFC-A,这可能是具有最低(或最高)UID 的标签。在那种情况下,标签可能(在某种程度上)能够通过使用更有可能被 selected 的 UID 来影响枚举的结果。但是,Android HCE 不允许您影响 UID(防冲突标识符),因此此技巧对您不起作用。
  • A reader 可能会枚举所有标签,如果发现多个标签,则停止与所有标签的通信。例如,这是非接触式支付系统的 EMV 规范强制要求的,以防止意外使用错误的卡进行支付。
  • A reader 可能会枚举所有标签并开始与所有标签通信。然后 reader(软件)可能会根据交换的协议参数选择最佳标签。如果是这种情况,您的 HCE 应用程序确实可以通过向 "win" selection 提供适当的参数来影响 reader 的 selection 过程的结果。然而,这在实践中很少使用。如果您自己 control/develop reader 一方,这仍然是一个选择。