选择NDEF记录以读取NDEF消息?

时间:2012-11-29 08:33:41

标签: android tags nfc rfid ndef

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

同时查看Android应用程序记录。

答案 1 :(得分: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)阅读时,我当然只在屏幕上显示第二个记录的有效负载,我通过“记录类型”存储。 但是对于第三方应用程序,特别是本机安装的应用程序(“标签”),它正确显示第一个记录,而第二个应用程序显示为空字段。 所以,它仍然没有工作,因为它仍然看到第二个记录 screenshot