我的活动已注册到android.nfc.action.TECH_DISCOVERED操作,一般来说效果很好:
<activity android:name="MyActivityToPpocessNfcTag"
android:label="@string/app_name">
<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/filter_nfc"
/>
</activity>
问题是“android.nfc.action.TECH_DISCOVERED”动作的性质。每次我扫描标签时,我都感兴趣,系统提示选择应用程序(一些预安装应用程序还会捕获类似类型的nfc标签以显示一些基本信息)。系统不提供“记住选择”功能。
我理解为什么会这样:有许多不同类型的nfc标签可以调用TECH_DISCOVERED动作。但是,此操作无法提供足够的信息来有效地确定如何过滤每个标记的应用程序,从而导致用户必须做出选择。
现在我的应用程序毫无疑问可以确定它可以处理哪个标记,因此有一种方法可以在系统提示选择应用程序之前捕获此意图,因此我可以采取相应的操作。 我只想摆脱这个系统消息“选择应用程序”,我不想消耗所有的nfc标签。
请注意,“android.nfc.action.TECH_DISCOVERED”是Android完成的第二级NFC处理,第一级是“android.nfc.action.NDEF_DISCOVERED”,它有uri和mimeType数据,因此Android可以有效地选择应用程序跑。我正在处理的NFC标签正在调用TECH_DISCOVERED操作而不是NDEF_DISCOVERED。