2

我在检测空标签时遇到问题。我的意思是空标签是一个带有 NdefRecord.TNF_EMPTY 类型记录的 Ndef 标签。我的应用程序使用所有标签启动,但我在处理此类内容时遇到了问题。

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
    <action android:name="android.nfc.action.TECH_DISCOVERED" />
    <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/techlist" />
</intent-filter>
<intent-filter >
    <action android:name="android.nfc.action.TAG_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

我想技术列表不是问题,因为 Ndef 标签被正确检测到,反正我的技术列表就是这个

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
    <tech>android.nfc.tech.IsoDep</tech>
</tech-list>
<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>
<tech-list>
    <tech>android.nfc.tech.NfcV</tech>
</tech-list>
<tech-list>
    <tech>android.nfc.tech.Ndef</tech>
</tech-list>
<tech-list>
    <tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>
<tech-list>
    <tech>android.nfc.tech.MifareClassic</tech>
</tech-list>
<tech-list>
    <tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>

“NFC 任务启动器”和“标签”应用程序能够检测到此类内容。

“TagInfo”应用程序将标签检测为 NDEF

Empty record
type: [NULL]
payload length: 0 bytes

谢谢。

4

1 回答 1

2

好吧,经过几个小时的测试,我已经解决了这个问题,但我不知道为什么会这样。

问题在于 AndroidManifest.xml 中的这段代码

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

我已将其更改为

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

只需取出标签“元数据”问题就解决了,但为什么呢?

于 2013-02-15T11:54:25.937 回答