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

Android 两个NFC标签链接到一个项目中的两个不同活动?,android,android-intent,nfc,intentfilter,ndef,Android,Android Intent,Nfc,Intentfilter,Ndef,我正在做一个NFC应用程序,想知道这种情况是否可能: 比如说,我在一个项目中有两个NFC标签和两个活动。 NFCA是通过在NFCA中编写MIME类型来打开活动A的 application/com.example.hello 在项目的清单文件中,活动A具有以下意图过滤器: <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" /> <data android:m

我正在做一个NFC应用程序,想知道这种情况是否可能:

比如说,我在一个项目中有两个NFC标签和两个活动。 NFCA是通过在NFCA中编写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并为活动B设置意图过滤器?考虑到活动A和活动B都在一个项目和包中


如果我在NFC A和B中为活动A和B编写相同的MIME类型,我会被询问点击时打开哪个活动,我不希望这样。

一种方法可能是在清单中有两个MIME类型。然后,您将这些MimeType链接到一个(附加)活动,该活动将检查标签上的MimeType(A或B)。根据您发现的情况,您可以启动相应的活动A或B。

一种方法可能是在清单中有两个MIMEType。然后,您将这些MimeType链接到一个(附加)活动,该活动将检查标签上的MimeType(A或B)。根据您找到的内容,您可以启动相应的活动A或B。

根据您想要实现的内容,最简单的方法是使用两个标记和两种不同的记录类型(例如,两种不同的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>

根据您想要实现的目标,最简单的方法是使用两个具有两种不同记录类型的标记(例如,两种不同的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>


标签上有什么类型的数据?可以只使用一个intent文件管理器,然后确定将从标记上的数据开始哪个活动。因此,结果是:意图过滤器将标记发送到ActivityC>ActivityC根据标记的数据>启动活动A或ActivityB确定要启动的活动标记上有哪种数据?可以只使用一个intent文件管理器,然后确定将从标记上的数据开始哪个活动。因此,结果是:意图过滤器将标记发送到ActivityC>ActivityC根据标记的数据>启动ActivityA或ActivityB确定要启动的活动