NFC中的AAR记录:有效负载在哪里?

时间:2012-06-04 19:40:52

标签: android nfc ndef android-applicationrecord

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

MAIN / LAUNCHER Intent不包含NfcAdapter.EXTRA_NDEF_MESSAGES个额外内容。因此,如果你使用AAR,那么我们遇到的所有麻烦的数据都会丢失。

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

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

谢谢!

2 个答案:

答案 0 :(得分:7)

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

  • 让Beam发件人使用带有两个NFC记录的NFC消息,第一个包含针对唯一MIME类型的内容,第二个包含AAR

  • 让Beam收件人对响应第一张NFC记录的活动有<intent-filter>,例如:

        <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商店分发)。

这是显示in the Android Beam example on the developer site的配方。

答案 1 :(得分:0)

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

几个问题 如果你使用两个记录:第一个正常,第二个AAR如何启动活动?我希望你可以通过标签发送意图启动。 AAR意图是否包含任何可以获取标记的内容?我想你可以manua