有没有办法单独在NFC NdefRecord中设置Id值?由于存在NdefRecord.getId()方法,因此API中似乎存在漏洞,但没有等效的NdefRecord.setID()。
有几种方法可以创建NdefRecord,但是没有一种方法具有Id字段。例如, public static NdefRecord createExternal(String domain,String type,byte [] data); 允许设置域名&输入但没有Id字段。
另外,令人讨厌的是NdefRecord.getType()方法返回整个 字符串(域+类型),而不仅仅是设置的类型。
答案 0 :(得分:0)
不,一旦创建了NdefRecord
对象,它就是只读的。这不仅是ID字段的情况,也是所有其他字段的情况。
我认为create*()
方法没有设置ID字段选项的原因是NDEF记录中的ID字段(其目的是在多个记录之间创建引用)很少使用
您可以做的是创建没有ID字段的记录:
NdefRecord tempRecord = NdefRecord.createExternal("example.com", "mytype", myPayload);
然后根据从该记录获取的值创建一个新实例,并包括您的ID字段:
NdefRecord record = new NdefRecord(tempRecord.getTnf(), tempRecord.getType(), myId, tempRecord.getPayload());
getType()
返回整个Type字段(包括域)的原因是NdefRecord
对象是任何NDEF记录的简单通用包装器(无论它是否是外部类型记录)或其他东西)并且只返回记录的二进制表示中实际包含的值。仅返回特定于域的类型名称将不会产生,因为无法知道如何解释它。在我看来,如果getType()
方法实际返回完整的规范类型URN" urn:nfc:ext:example.com:mytype"。