我在Nexus S上安装了NXP TagWriter和NFC TagInfo,这是用于我的NFC应用程序开发的相同设备。问题是我的应用程序在标签读取后没有显示在“完成操作使用”对话框中,只有从市场上安装都是。调试一段时间后,我尝试使用demo application,结果是一样的。我在这里错过了什么?为了让意图过滤器正确解析,必须从市场上安装应用程序吗?来自市场的NFC应用覆盖“完成操作使用”对话条目
更新
我的意图过滤器只是
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
我曾尝试加入其他如manual规定,一个接一个,以及一起没有成功。它可能与MIME类型有关吗?
当读取NFC标签时,只有这两行与行动有关,而没有其他内容。
INFO/ActivityManager(111): Starting: Intent { act=android.nfc.action.TECH_DISCOVERED flg=0x10000000 cmp=com.nxp.nfc.tagwriter/.activities.DashboardActivity (has extras) } from pid 197
INFO/ActivityManager(111): Starting: Intent { cmp=com.nxp.nfc.tagwriter/.activities.ConfirmLicenseActivity } from pid 6250
眼看android.nfc.action.TECH_DISCOVERED
被触发时,我加入了以下意图过滤器:
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
而且res/xml/nfc_tech_filter.xml
包含
<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>
听起来很不自然,但ididn't不足,如果你有你的应用程序没有安装其他两个你提到你的IntentFilter工作? – codeScriber 2011-04-01 09:19:53
正确的,如果安装了my和NFCDemo,将会显示My,NFCDemo和Tags对话框,如果安装了NXP TagWriter或NFC TagInfo,它们会立即运行,甚至不会预安装标签。如果两个市场都已安装,则它们都列为选项,但标签不是。 – 2011-04-01 09:25:22
这确实是有用的,安装应用程序从市场到从adb或sdcard安装应用程序应该没有区别。 关于意图过滤器,你想捕捉的确切的intnet是什么/它是一个MIME类型是不同的,tagWriter具有它,但你不会被过滤掉,android给你最好的匹配,可以你是否错过了ilter参加intnet派对的小小风筝? – codeScriber 2011-04-01 10:12:27