EnableReaderMode 的替代方法 - 使用 Android API 小于 19(ICS 和 Jelly Bean)..?

Alternative way for EnableReaderMode - to work with Android API's lesser than 19 (ICS and Jelly Bean)..?

我目前正在使用 Android 支付应用程序,它可以使用 NFC 与 ISO/IEC 14443-4 智能卡通信。

为此,我在 Activity 中使用

启用了 reader 模式

mNfcAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_B | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null);

并重写了 ReaderCallbackonTagDiscovered() 在 Android 应用程序和 ISO/IEC 14443-4 智能卡之间发送和接收 APDU 命令的方法。

由于 Reader回调和覆盖 onTagDiscovered() 从 API 级别 19 (KitKat) 开始可用,它在 KitKat Android 设备 运行 上工作正常.

我想让我的应用程序也能与 Android ICS 和 Jelly Bean 一起使用。是否有任何替代方法或解决此启用 Reader 模式,为 ICS 和 JellyBean 进行 APDU 通信..?

不,在 Android 4.4 之前没有直接等效于 enableReaderMode(以您使用它的方式)。但是,您可以通过使用 前台调度系统 实现类似的功能(请参阅 this answer 了解如何使用前台调度)。

不过,请注意使用 enableReaderMode(... FLAG_READER_NFC_B ... FLAG_READER_SKIP_NDEF_CHECK ...) 和使用 enableForegroundDispatch(...) 之间存在一些差异:

  • 前台调度将在将卡片传递给您的应用程序之前执行 NDEF 检查。
  • 前台调度将轮询所有技术(即使您选择仅处理具有适当意图过滤器的特定技术)。
  • 基于 Broadcom NFC 芯片组的 Android 设备上的标签前缀检查机制存在一个已知错误,可能会干扰您的实际通信。这只能使用 reader 模式 API.
  • 可靠地处理
  • 您只能使用reader模式禁用标签扫描平台声音API。