我在网上看到的大多数示例都使用带有 mime 类型过滤器的 TNF_MEDIA_TYPE 来将 NFC 发起的 Intent 路由到正确的活动。但是我找不到任何合适的方法来使用自定义二进制有效负载捕获 TNF_UNKNOWN NdefMessage。
有什么建议吗?
参考:
我在网上看到的大多数示例都使用带有 mime 类型过滤器的 TNF_MEDIA_TYPE 来将 NFC 发起的 Intent 路由到正确的活动。但是我找不到任何合适的方法来使用自定义二进制有效负载捕获 TNF_UNKNOWN NdefMessage。
有什么建议吗?
参考:
迟到的答案:我认为答案就在这里:Android NFC 技术列表 - 问题
事实上,我将 TNF_UNKNOWN 用于我自己的标签,并且在 Android 4.1.2 中一切正常,但是当涉及到 Android 4.3 时,它就<intent-filter>
不起作用了。所以我必须找到一个正确的过滤器,尤其是正确的<tech-list>
资源文件。
就我而言,我访问了这个稍作修改的 xml 文件(添加了 Topaz 512):
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" >
<!-- Touchatag tag -->
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.Ndef</tech>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>
<!-- DESFire tag -->
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.IsoDep</tech>
<tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>
<!-- TOPAZ tag -->
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.Ndef</tech>
</tech-list>
<!-- Any Tag -->
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
</tech-list>
</resources>
和相同的清单条目:
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
</intent-filter>
<meta-data
android:resource="@xml/nfc_tech_filter"
android:name="android.nfc.action.TECH_DISCOVERED" />