0

我开发了 2 个 Android 应用程序。第一个,写入NFC标签,第二个读取我写的内容。

所以,*第一个应用程序(WriteNFC):我正在写入标签,一个涉及两个 NDEF 记录的 NDEF 消息:第一个记录是“文本”类型,第二个是“URL”类型。

第二个应用程序(ReadNFC):我扫描标签,以读取 NDEF 消息,并显示它,但不完全。我只在屏幕上显示第二条记录(URL)。我想做的是,当用户选择他安装的另一个用于读取 NFC 标签的 android 应用程序时,这个应用程序应该只能显示第一条记录(文本),而不是第二条记录(URL)?

总而言之,当我们扫描 NFC 标签时,使用我的应用程序 (ReadNFC),我们只能看到一个 URL (http://www.stackoverflow.com),而使用其他应用程序,我们只能看到一个文本 (Hello World) .

4

2 回答 2

1

使用标准 NDEF 文本和 URI 记录类型是不可能的。

但是您可以使用只有您的应用程序可以使用的外部类型记录或未知记录来创建自己的记录负载类型。

另请查看 Android 应用程序记录。

于 2012-11-29T13:05:53.773 回答
0

这就是我在第一个应用程序(WriteNFC)中所做的

private NdefRecord createRecord1(String data)
{  
   byte[] payload = data.getBytes(Charset.forName("UTF-8"));
   byte[] empty = new byte[] {};
   return new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI, empty, empty, payload);
}
private NdefRecord createRecord2(String data)
{  
   byte[] payload = data.getBytes(Charset.forName("UTF-8"));
   byte[] empty = new byte[] {};
   return new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI, payload, empty, empty);
}

在第二个应用程序中(ReadNFC)

NdefRecord cardRecord = msg.getRecords()[1];//Extract the second Record
String url_data = new String(cardRecord.getType());//Read data type

结果:

当我使用自己的应用程序(ReadNFC)阅读时,屏幕上当然只有第二条记录的有效负载,我通过“记录类型”存储了它。但是对于第三方应用程序,尤其是本机安装的(“标签”),它会正确显示第一条记录,而第二条记录是一个空字段。所以,它仍然不起作用,因为它仍然看到第二条记录 截屏

于 2012-12-07T15:41:57.210 回答