两个NFC标签链接到项目中的两个不同活动?

时间:2014-11-11 09:12:52

标签: android android-intent nfc intentfilter ndef

我正在做一个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类型,我会被问到在点击时打开哪个活动,我不希望这样。

2 个答案:

答案 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>