使用Android 7.0或更高版本从iPhone Suica App读取NFC数据时出现问题

时间:2019-04-25 15:59:07

标签: android nfc applepay

我的项目需要使用Android设备从Suica读取交易历史记录数据,不仅是从物理卡上,而且是从通过某些应用程序与卡集成在一起的移动设备上。对于后面的例子,有一个iPhone上的Suica应用程序,它可以连接到Apple Pay服务link

我的方法只是在两种情况下都使用Android NFC API。我们相信具有Suica应用程序的物理卡和移动设备实际上都可以视为NFC-F(Felica)标签。 Suica应用程序可以在卡仿真模式下有效运行,不是吗?

问题在于,SDK版本高达Android 6.0(API级别23)的Android设备从物理卡或移动设备读取数据时几乎没有区别,但对于Android版本7.0(API级别)的SDK版本的Android设备24),它几乎无法将移动设备检测为NFC-F标签,因此我们基本上无法从中读取数据。

也许Android SDK中有一些更改导致了此问题,但是我不知道它们是什么,或者如何找到它们。谁可以给我解释一下这个 ?我已经发布了与Teratail类似的question,但没有答案。

-------------更新于2019/05/01 -------------

看一下Android SDK源代码,事实证明,从SDK Android 7.0版本开始,就添加了用于CardEmulation的HostNfcFService。可能不是巧合,但我还无法弄清楚。 Github link

<!-- Scan activity -->
<activity
    android:name="xxxx.ScanActivity"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme.NoActionBar">
    <meta-data
        android:name="android.nfc.action.TECH_DISCOVERED"
        android:resource="@xml/nfc_tech_filter" />

    <!-- NFC TAG -->
    <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <tech-list>
        <tech>android.nfc.tech.NfcF</tech>
    </tech-list>
</resources>

1 个答案:

答案 0 :(得分:0)

是的,模拟的Suica的行为几乎应与物理行为完全一样,并且您应该能够访问其余额和历史记录(假设使用真实卡也可以做到这一点;我对Suica的访问不了解太多配置)。

您是否尝试过在Android NFC API中启用reader mode

这会禁用读取设备上的各种功能(例如Android Beam,卡仿真模式),这可能会干扰对目标设备上仿真卡的访问。