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

时间:2015-01-14 08:58:56

标签: android nfc android-4.0-ice-cream-sandwich android-4.2-jelly-bean apdu

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

为了达到我的目的,我使用

启用了阅读器模式

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

和overidded ReaderCallback的{​​{1}}方法,用于在Android应用程序和ISO / IEC 14443-4智能卡之间发送和接收APDU命令。

由于ReaderCallback和覆盖onTagDiscovered()可从API级别19(KitKat)获得,因此它可以在KitKat上运行的Android设备上正常运行。

我想让我的应用程序也适用于Android ICS和Jelly Bean。是否有任何替代方法或解决此启用读卡器模式,为ICS和JellyBean进行APDU通信..?

1 个答案:

答案 0 :(得分:2)

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

尽管如此,请注意使用enableReaderMode(... FLAG_READER_NFC_B ... FLAG_READER_SKIP_NDEF_CHECK ...)和使用enableForegroundDispatch(...)之间存在一些差异:

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