android - NFC 中的 AAR 记录 : Where's The Payload?

标签 android nfc ndef android-applicationrecord

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

这是显示的食谱 in the Android Beam example on the developer site .

关于android - NFC 中的 AAR 记录 : Where's The Payload?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887275/

相关文章:

android - SupportMapFragment 覆盖 setOnMyLocationChangeListener

security - 需要什么安全访问模块 (SAM)?

java - 如何检测/读取服务中的 NFC 标签

android - 从 Android 手机向 Raspberry Pi 接收 NFC/NDEF 消息

java - NdefMessage 问题 - 类 Message 中的构造函数 Message 无法应用于给定类型

android - AVD Manager,为什么我不能创建 AVD?

javascript - 在 iPhone 和 Android 上通过 JavaScript 检测手指滑动

android - 使用 NdefMessage 写入图像

android - android中如何从串口接收数据

Android IsoDep 命令链失败