当前位置: 首页 > 知识库问答 >
问题:

Android:将多个NDEF消息放在一个NFC标签中?

东郭承业
2023-03-14

我正在尝试创建一个 NFC 标签,该标签将触发两个单独的操作:

  • 打开蓝牙连接
  • 启动应用程序(或前往游戏商店)

我使用 nfc-eclipse-plugin 创建了一个包含两个合适记录的消息,但是,当写入标签时,它总是只触发第一个操作。两者都单独工作,但第二个总是被忽略。

我知道一个NFC标签上的2个NDEF消息/记录的答案-Android说你不能在一个标签上有两条独立的消息,只有一条消息中的多条记录,但是从包装NDEF的TLV格式来看,似乎没有什么可以阻止第二条NDEF消息出现在最终的0xFE标记字节之前?

有没有人有任何其他想法来实现我在一个标签上有两个单独操作的目标?

共有3个答案

袁阿苏
2023-03-14

是的。Android不支持多条NDEF消息。它只允许一条。您可以将多条NDEF记录添加到一条NDEF消息中。

NdefRecord text1 = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
                                  message1.getBytes(),
                                  new byte[]{},
                                  message1.getBytes());
NdefRecord text2 = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
                                  message2.getBytes(),
                                  new byte[]{},
                                  message2.getBytes());
NdefMessage mNdefMessage = new NdefMessage(new NdefRecord[]{text1,text2});
罗伟志
2023-03-14

总结一下:我将包含两条独立的NDEF消息的标签合并在一起,而不是一条消息包含两条记录。直接在标签上的字节级别,如下所示:

0x03 <length1> <message1> ... 0x03 <length2> <message2> ... 0xFE

NFC类型2规范明确允许这样做。然而,正如人们所怀疑的那样,Android默默地忽略了第一条消息之外的任何内容。

白高逸
2023-03-14

你说得对,Android不支持两条NDEF消息。但是你能有一个包含你两种行为的NDEF信息吗?我的意思是,你的有效载荷可能是这样的:

"action a,action b" 

并让您的应用程序来解析该有效负载并确定它需要做什么?

 类似资料:
  • 我有一个应用程序可以读取一个NDEF标签,没什么大不了的:-) 我找到了这个链接:如何发现NFC标签是否还在Android的范围内?什么是一个开始,但我不知道如何更新标签。 我很挣扎,我甚至不知道我尝试做的事情在技术上是否可行。 有没有人知道怎么做的?干杯 对不起,我试着看了一些教程和例子,但我还是不明白。 这是我的全部密码。读取标签需要长得多的时间,有时并不需要。我不知道如何和在哪里更新标签,以

  • 类似的问题 - 如何在Android中读取检测到的NFC标签(NDEF内容)详细信息? 我希望我的android应用程序能够读取和解析检测到的NDEF消息。 我已经编辑了AndroidManifest.xml来检测nfc标签,并添加了意图过滤器,如下所示 我相信这很好,因为当我使用SDK附带的NFCDemo示例应用程序创建MockNDEF标签时,当我可以选择处理这些生成的标签的应用程序列表出现时,

  • 我是NFC的新手,我正在从事一个项目,我需要通过NFC将错误日志从燃气表传输到手机。由于NFC正在使用NDEF消息,因此我遇到了一个问题。 目前我正处于研究阶段,我可以看到NFC每次传输的数据量相当低。我还不知道日志的确切大小,但是如果日志对于一条NDEF消息来说太大了,我该怎么办?不,我不是指NDEF记录,我是指NDEf消息。我知道NDEF消息是由NDEF记录组成的,但是在日志对于一个NDEF消

  • 如何将NDEF消息写入NFC标记?我必须更改清单文件吗?到目前为止,我有生成NDEF消息的代码: 如何发现标签?有人能帮我吗?

  • 我正在开发一个应用程序,在Android Studio中编写NFC标签。我的代码: 当我运行它并试图写在一个NFC标签我总是得到myTag==空,所以我总是在这里: if(myTag==null){Toast.makeText(context,Error_dected,Toast.LENGTH_LONG).show(); 我在“android.Manifest”中修改了用户权限,知道发生了什么吗?

  • 我想将简单的文本数据写入我的恩智浦MiFARE DesFire EV1(NDEF Type 4标签)。但是,写入过程总是失败,并显示 为了写作,我得到NFC标签,我使用函数: 第三行()的结果如下: 由此我假设,标签的格式正确(作为NDEF)。现在,当调用<code>ndef时。connect()它只显示