gpt4 book ai didi

java - 使用 NFC TAG 检测我的应用程序的问题

转载 作者:行者123 更新时间:2023-11-29 20:58:01 24 4
gpt4 key购买 nike

我开发了一个使用 NFC 功能的应用程序并获得了这个标签用于我的测试。

a busy cat http://nsae02.casimages.net/img/2014/11/20/mini_141120054648901134.png

及其特点

a busy cat http://nsae02.casimages.net/img/2014/11/20/mini_141120054925844663.png

一切都很好..

在配置中添加以下几行

<uses-feature android:name="android.hardware.nfc" android:required="false" />
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

添加我的代码,以便在检测到 nfc 时选择我的应用

获取 UID .. 并使其正确。 (然后看看是否可以获取文本等不同的字段。)好的。一切正常..

my app blue http://nsae02.casimages.net/img/2014/11/19/mini_141119082121303903.png

我的问题是同样使用 NFC TAG TAG Writer 应用程序对其进行编辑

a busy cat http://nsae02.casimages.net/img/2014/11/20/mini_141120055409818122.png

a busy cat http://nsae02.casimages.net/img/2014/11/20/mini_141120055615627271.png

然后我输入一条文本,然后我返回使用我的应用程序,但不再出现在列表中..

Not my app http://nsae02.casimages.net/img/2014/11/19/mini_141119081714874308.png

多次转弯并能够重新出现在我的应用列表中格式化 NFC TAG

我做错了什么?如果我没有提供足够的信息,请问我。非常感谢

最佳答案

您需要设置与标签类型匹配的适当 Intent 过滤器。目前您正在使用

  • 一个不会在大多数设备上触发的 NDEF_DISCOVERED Intent 过滤器,因为它没有指定数据类型,并且
  • 一个 TAG_DISCOVERED Intent 过滤器,仅当在 AndroidManifest.xml 中使用时才用作回退。

因此,您遇到的是回退行为:虽然您的标签不包含 NDEF 记录,但它会匹配回退行为。只要您向其中写入文本记录,它就会匹配所有注册了文本 NDEF 记录的应用,因此不会再触发回退。

因此,如果您想在您的标签上使用文本记录,您可以为您的 Activity 添加以下 Intent 过滤器:

<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>

请注意,使用文本记录通常不是一个好主意。首先,它们仅用于人类可读的数据,其次,许多应用程序都注册了它们,这使得用户很难在 Activity 选择器对话框中选择正确的应用程序。

这仍然无法捕获您的标签不包含任何数据的情况(目前由回退过滤器处理)。在这种情况下,您应该为 NfcV 标签技术使用 TECH_DISCOVERED Intent 过滤器:

<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/filter_nfc" />

在您的 res/xml 文件夹中,您需要创建一个名为 filter_nfc.xml 的文件,内容如下:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.NfcV</tech>
</tech-list>
</resources>

或者当您想注册多种不同的标签技术时:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.NfcV</tech>
</tech-list>
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
</tech-list>
</resources>

关于java - 使用 NFC TAG 检测我的应用程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045292/

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