我正在做一个NFC应用程序,并想知道这种情况是否可行:
说,我在一个项目中有2个NFC标签和2个活动。 编写NFC A是为了通过在NFC A中编写MIME类型来打开活动A
application/com.example.hello
在项目的清单文件中,活动A具有此意图过滤器:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<data android:mimeType="application/com.example.hello" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
所以,这完全没问题。 我要添加另一个NFC标签和另一个活动。 编写NFC B以打开活动B
现在,我应该如何将我的MIME类型写入NFC B并为Activity B设置intent-filter?考虑活动A和活动B都在一个项目和包中。
如果我在NFC A和B中为活动A和B编写相同的MIME类型,我会被问到在点击时打开哪个活动,我不希望这样。
答案 0 :(得分:1)
一种方法可能是在清单中有两个MimeType。然后你将那些MimeTypes链接到(附加)活动,该活动将检查你的标签(A或B)上实际上是哪个MimeType。根据您的发现,您可以参加各自的活动A或B.
答案 1 :(得分:1)
根据您想要实现的目标,最简单的方法是使用具有两种不同记录类型的两个标签(例如,两种不同的MIME类型,但请注意,您应该优先使用NFC论坛外部类型名称而不是自定义MIME类型! )
假设你有
标签A:
+--------------------------------------+
| MIME:application/com.example.hello.a |
+--------------------------------------+
标签B:
+--------------------------------------+
| MIME:application/com.example.hello.b |
+--------------------------------------+
然后,您可以为活动定义意图过滤器,这样ActivityA只会被标记A触发,而ActivityB只会被标记B触发:
<activity android:name=".ActivityA" ...>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/com.example.hello.a" />
</intent-filter>
</activity>
<activity android:name=".ActivityB" ...>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/com.example.hello.b" />
</intent-filter>
</activity>