Android NFC Card Emulation 尝试模拟卡

Android NFC Card Emulation try to emulate a card

我正在尝试使用 NFC 来模拟卡片。

我期望的是,当我在 NFC reader 上传递 phone 时,reader 会读取数据(我以后会修改此数据)。

在 reader 上传递 phone,据我了解,入口点应该在 Java class CardService.java。但是方法 processCommandApdu 从未被调用(我试图在那里插入一个断点,甚至是祝酒词,但该代码从未被调用)。

所以目前我无法理解的主要事情是:我做错了什么吗?这东西能做吗?

为了为传入的 APDU 命令调用方法 processCommandApdu(),reader 需要先 select 您的应用程序。根据 ISO/IEC 8716-4:

使用 SELECT(通过 AID / DF 名称)命令完成选择
00 A4 04 00  <Lc>  <AID>  00

其中 <Lc><AID> 的长度,<AID> 是为您的应用程序注册的应用程序标识符。

ISO/IEC8716-4 应用程序结构(即通过 SELECT(通过 AID)命令应用 select离子)是唯一的方法 Android 允许通过 HCE 与应用程序开始交互。因此,不可能 模拟使用不同机制的卡片(卡片应用程序)。 (至少在不修改 Android 系统本身的情况下;例如,通过自定义 ROM 或通过 Xposed。)

CardEmulation 示例应用程序的 AID 是通过示例项目中名为 res/xml/aid_list.xml 的文件注册的。在此文件中,您注册 AID 组,这些组又包含 AID 过滤器条目:

<aid-group android:description="@string/card_title" android:category="other">
    <aid-filter android:name="F222222222"/>
</aid-group>

因此,示例应用程序中注册的默认 AID 是 F222222222。因此,您可以使用以下 SELECT(字节 AID)命令来 select 应用程序:

00 A4 04 00  05  F2 22 22 22 22  00