如何在 Android 设备上使用 Flutter 中的“nfc_manager”插件来防止默认的“已扫描新标签”弹出窗口?

问题描述 投票:0回答:2

我在 Android 手机上读取 NFC 芯片时遇到问题。问题是,当我在 Flutter 应用程序中扫描一个时,它会打开一个新窗口,并显示“已扫描新标签”。

这很烦人,因为它离开了应用程序,我必须返回它。我尝试过搜索它,但每一个解决方案都是针对“nfc_in_flutter”插件的,但我使用的是“nfc_manager”插件。我无法使用“nfc_in_flutter”,因为它已经过时且与 Dart 3 不兼容。

以下是我找到的一些来源:
https://github.com/semlette/nfc_in_flutter/issues/50

nfc_in_flutter:android版本如何防止“扫描新标签”?

当应用程序收到 NFC 数据时,它会打开“收集的新标签” // 我找到的最好的,但仍然不起作用

有谁知道如何阻止该窗口打开?

android flutter nfc
2个回答
1
投票

我最近使用了 Flutter NFC Manager 的同一个包并遇到了同样的问题:

Android 系统的 NFC 处理程序会干扰标签扫描并打开新窗口,而不是 Flutter 应用直接处理它。

据我所知,基本上,你需要有正确的 flutter 代码来侦听 NFC 标签,否则 Android 会拦截该标签。

因此,如果您

致电: initState

它将打开 Android 版,因为没有处理该卡的代码。

所以,我的解决方案是

NfcManager.instance.startSession( onDiscovered: (NfcTag tag) async { // Do something with an NfcTag instance. }, );

对于 NFC 标签,其中:

always listen

我是否需要读卡。由于我们使用的是 flutter nfc 管理器,它将覆盖 Android 管理器。

另外,不要忘记丢弃:

@override void initState() { super.initState(); NfcManager.instance.startSession( onDiscovered: (NfcTag tag) async { // Even if you're not doing anything here, it will still prevent the Android NFC handler from triggering. }, ); }



0
投票

@override void dispose() { NfcManager.instance.stopSession(); super.dispose(); }

© www.soinside.com 2019 - 2024. All rights reserved.