android - 如何在 Android 应用程序中永久禁用 NDEF 标签发现而不仅仅是 Activity?

标签 android nfc ndef

我们有一个用于模拟 POS 终端的应用程序,即它通过 NFC 与借记卡/信用卡进行通信。 在我使用的所有应用 Activity 中:

    nfcAdapter.enableReaderMode(this,
            nfcCallback,
            NfcAdapter.FLAG_READER_NFC_A |
                    NfcAdapter.FLAG_READER_NFC_B |
                    NfcAdapter.FLAG_READER_NFC_F |
                    NfcAdapter.FLAG_READER_NFC_V |
                    NfcAdapter.FLAG_READER_NO_PLATFORM_SOUNDS |
                    NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
            null
    );

为了禁用 NDEF 发现,因为它会干扰卡通信。它运行良好,但仅在 Activity 中,即当开始新 Activity 或完成使用 startActivityForResult 调用的 Activity 时,显然存在操作系统发送一个 NDEF 标记发现消息的中间状态,例如:

2018-11-14 09:07:11.794 802-3109/? D/NxpNciX: len =  16 > 00000D00A4040007D276000085010100
2018-11-14 09:07:11.794 802-3109/? D/NxpTml: PN54X - I2C Write successful.....

主要问题是这是不可重复的,即有时会发生,有时不会。这是个大问题。

有没有办法在应用级别禁用 NDEF 标签发现,而不仅仅是针对 Activity ?

这个问题有解决办法吗?

最佳答案

一个很晚的回复,但在这里为 future 的搜索者注明。

从 API 24 开始,nfcAdapter 实例上有一个新函数可以在一段时间内忽略对同一标签的重复扫描。

Documentation

在 nfc 回调中成功读取 nfc 后,我已经成功添加了这个(在将 Activity 切换为 startActivityForResult 之前)。

// Ignore rescans of the same tag for 3 seconds in an attempt to avoid the tag being
// rescanned and having the default response while we are switching activities (while navigating)
// 3 seconds chosen as 1 second sometimes isn't enough and 3 seconds seems appropriate. Not too long or short...
nfcAdapter.ignore(tag, 3000, null, null);

关于android - 如何在 Android 应用程序中永久禁用 NDEF 标签发现而不仅仅是 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294909/

相关文章:

Android Studio - 运行构建会折叠项目浏览器中的所有文件夹?

Android NFC 标签(通用阅读器)

android - 一个 NFC 标签上的两个 Action

android - 为 NFC Intent 声明自定义 mimeType

android - 如何让我的应用程序通过 NFC 发送蓝牙配对请求

android - 如何解读 Mifare Classic 1K 上的 NDEF 内容

android - 使用 React Native 读取 NFC 标签类型 "android.nfc.tech.NfcV"和 "android.nfc.tech.NdefFormatable"

Android 共享首选项和数组

javascript - 如何避免仅在 Android 上出现 Phonegap 应用程序黑屏?

android - 从 Fragment 调用 DialogFragment