gpt4 book ai didi

安卓 NFC : Intercept all Tags

转载 作者:太空狗 更新时间:2023-10-29 15:48:35 25 4
gpt4 key购买 nike

我希望我的应用拦截手机发现的所有标签。这样我想检查标签的 uid 并在之后传递 Intent (显示应用程序选择器等)。

<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>

这就是我目前在 list 中的内容,以及用于 TAG_DISCOVERED 的 Intent 过滤器:

<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.NfcB</tech>
<tech>android.nfc.tech.NfcF</tech>
<tech>android.nfc.tech.NfcV</tech>
<tech>android.nfc.tech.IsoDep</tech>
<tech>android.nfc.tech.MifareClassic</tech>
<tech>android.nfc.tech.Ultralight</tech>
<tech>android.nfc.tech.Ndef</tech>
<tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>

当我扫描 Mifare 智能卡时,我的应用程序会被调用,当我将不同的标签与 NXP ICODE IC 一起使用时,会启动标准的 android 标签应用程序。

关于如何确保我看到所有标签的任何提示?

最佳答案

首先,技术列表的工作方式是所有列出的技术都用 AND 连接在一起,这意味着如果标签列出了所有不同的技术, Intent 就会传递给应用程序。我不知道有什么做的。你想要做的是更多:

<tech-list>
<tech>android.nfc.tech.NfcA</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcB</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcF</tech>
</tech-list>

等等。这 ORs 您想要的不同标签。 (NfcA 或 NfcB 等)现在这些技术中的一些结合在一起,比如 NfcA 和 Ultralight 或 Ndef。所以如果你想捕捉一张 NfcA 和 Ndef 的卡片,你会使用

<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.Ndef</tech>
</tech-list>

现在,与标签上的技术最匹配的应用程序将启动,或显示在选择菜单中。但是 NDEF_DISCOVERED 优先于 TECH_DISCOVERED。现在 NDEF_DISCOVERED Intent 启动器可以非常具体地指定要传递的标签。虽然某些 NDEF 格式(如 Mime 类型)允许“捕获所有”过滤器(例如,Mime 的“/”),但有些则不允许。 (比如 uri 格式的 Ndef 记录)。对于那些,如果有针对它的特定应用程序,除非您知道并内置它,否则您将无法保证您的应用程序会启动。此外,对于 Ndef 标签(Mime 或 URI,但不能同时使用两者),我从未能够拥有多个 Intent 过滤器。但这可能是我不够努力。

如果另一个应用程序尝试做同样的事情(捕获尽可能多的标签),您将始终被它调用。因此,除非您在手机上安装了唯一的应用程序,否则不可能捕捉到每一个标签。但是像上面看到的那样格式化你的技术列表代码会让你更接近。

关于安卓 NFC : Intercept all Tags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com