根据 this answer ,并通过测试验证,当您使用 Android Beam 推送包含 AAR 记录的 NFC 消息时,接收设备将启动指定应用程序的 MAIN
/LAUNCHER
Activity 在 AAR 中。
MAIN
/LAUNCHER
Intent
不包含 NfcAdapter.EXTRA_NDEF_MESSAGES
额外内容。因此,如果您使用 AAR,我们千方百计传送过来的数据似乎会丢失。
在这种情况下,有什么方法可以获取触发应用程序启动的 NFC 消息吗?
如果答案是“否”,那么 AAR 的用例是什么?当接收设备上不存在所需的应用程序(调出 Play Store)时,我可以看到它可能在哪里有用,但是一旦安装了该应用程序,AAR 就会阻止任何将数据从一个设备传输到另一个设备的尝试,这是有点像 NFC 背后的意义。
谢谢!
最佳答案
冒着回答我自己的问题的风险,让它发挥作用的一个方法(显然)是:
让 Beam 发送者使用带有两个 NFC 记录的 NFC 消息,第一个包含唯一 MIME 类型的内容,第二个是 AAR
让 Beam 接收者有一个
<intent-filter>
在响应第一个 NFC 记录的 Activity 上,例如通过:<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 - NFC 中的 AAR 记录 : Where's The Payload?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887275/