8

根据这个答案,并通过测试验证,当您使用 Android Beam 推送包含 AAR 记录的 NFC 消息时,接收设备将为AAR 中指定的应用程序启动MAIN/活动。LAUNCHER

MAIN/LAUNCHER Intent不包含NfcAdapter.EXTRA_NDEF_MESSAGES额外的。因此,如果您使用 AAR,我们费尽心思传输过来的数据似乎会丢失。

在这种情况下,是否有某种方法可以获取触发应用程序启动的 NFC 消息?

如果答案是“否”,那么 AAR 的用例是什么?当接收设备上不存在所需的应用程序(打开 Play 商店)时,我可以看到它可能有用的地方,但是一旦安装了应用程序,AAR 就会阻止任何将数据从一台设备传递到另一台设备的尝试,即有点像NFC背后的一点。

谢谢!

4

2 回答 2

7

冒着回答我自己的问题的风险,让这个工作(显然)的一个方法是:

  • 让 Beam 发送者使用带有两个 NFC 记录的 NFC 消息,第一个包含用于唯一 MIME 类型的内容,第二个是 AAR

  • 让 Beam 接收者有一个<intent-filter>响应第一个 NFC 记录的活动,例如通过:

        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
    
            <category android:name="android.intent.category.DEFAULT"/>
    
            <data android:mimeType="application/vnd.commonsware.webbeam"/>
        </intent-filter>
    

如果应用程序已经存在,NDEF_DISCOVERED Intent将被使用,接收者可以拿起 NFC 消息并从初始记录中提取数据。如果应用程序不存在,AAR 将启动,调出 Play 商店(无论您的应用程序是否通过 Play 商店分发)。

这是开发人员网站上的 Android Beam 示例中显示的配方。

于 2012-06-05T12:50:45.653 回答
0

从查看文档看来,用例似乎保证您的应用程序是从 NFC 事件启动的。第二个用例基本上为手机提供了一种方法来了解它需要哪个应用程序来读取标签。

几个问题如果您使用两条记录:第一条正常,第二条 AAR 活动如何启动?我希望您会通过标签调度意图开始。AAR 意图是否包含任何让您获得标签的内容?我想你可以手动

于 2012-06-04T21:16:47.713 回答