使用NFC标签检测我的应用程序的问题

时间:2014-11-20 17:00:06

标签: java android nfc intentfilter ndef

我开发了一款使用NFC功能的应用程序,并为我的测试获得了此TAG。

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

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

1 个答案:

答案 0 :(得分:2)

您需要设置与您的代码类型匹配的正确意图过滤器。目前您正在使用

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

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

因此,如果您想在代码上使用文字记录,可以为您的活动添加以下意图过滤器:

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

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

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

<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>