3

我无法匹配Intent用于空 NFC 标签的过滤器。我能够检测带有 NDEF 数据的标签。但是当我点击一个空的 NFC 标签时,什么也没有发生。

下面是我的过滤器部分AndroidManifest.xml

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

2 回答 2

5

我发现在我的 nfc 技术过滤器列表中执行以下操作:

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

与我的任何标签都不匹配,因为它们被评估为逻辑 AND。为了让我的应用程序匹配我的 NFC 标签,我刚刚为我的标签创建了一个特定的标签技术列表,如下所示:

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

这会将标签匹配为(NfcA AND Ndef AND MifareUltralight) OR NfcA OR Ndef OR MifareUltralight. 希望这可以帮助目前遇到此问题的任何人。

于 2012-07-11T07:20:53.900 回答
3

您应该添加<category android:name="android.intent.category.DEFAULT"/>到 TECH_DISOVERED(和 TAG_DISCOVERED)过滤器。否则将不匹配。

于 2012-07-10T21:23:32.510 回答