我在 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 数据时,它会打开“收集的新标签” // 我找到的最好的,但仍然不起作用
有谁知道如何阻止该窗口打开?
我最近使用了 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.
},
);
}
@override
void dispose() {
NfcManager.instance.stopSession();
super.dispose();
}