我正在编写一个应该检测nfc标记并自动启动的应用程序。 我已经通过使用TECH_DISCOVERED +过滤器成功完成了这项工作,但我认为更好的方法是使用NDEF_DISCOVERED。 我已将intent-filter添加到我的清单中,但它不起作用。 这是我的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/nfc_tech_filter" />
当我想尝试NDEF_DISCOVERED时,我尝试:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain" />
对于标签,我使用“Mifare classic 1k”标签,使用市场上的NFC TagInfo应用程序编写为“智能海报”。
我做错了什么? 或者,启动我的应用程序并显示活动选择对话框的另一种方法是什么?
谢谢, 叶兰。
答案 0 :(得分:3)
您正在过滤text / plain而不是智能海报的URI。 Android将智能海报转换为URI,然后您必须过滤该URI。如果检查启动的意图,可以在logcat中看到URI。对于像http://example.com/file这样的URI,请执行以下操作:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"
android:host="example.com"
android:pathPrefix="/file" />
</intent-filter>
有关如何解析NDEF消息的详细信息,请参阅NFC开发指南。请阅读整篇文档,以完全了解如何过滤正确的意图:http://developer.android.com/guide/topics/nfc/nfc.html