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

Com*_*are 8 android nfc ndef android-applicationrecord

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

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

有没有办法在这种情况下获取触发应用程序的NFC消息?

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

谢谢!

Com*_*are 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>
    
    Run Code Online (Sandbox Code Playgroud)

如果应用程序已存在,NDEF_DISCOVERED Intent将使用该应用程序,并且收件人可以获取NFC消息并从初始记录中提取数据.如果该应用程序不存在,AAR将启动,启动Play商店(无论您的应用程序是否通过Play商店分发).

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