我使用NdefFormatable类格式化我的NFC卡。守则是这样的:
NdefFormatable formatable=NdefFormatable.get(tag);但我得到了可形成的引用为空。我检查了在get(tag)方法中运行的代码。它检查:
if (!tag.hasTech(TagTechnology.NDEF_FORMATABLE)) return null;我为我的标签运行了"tag.getTechList()“。我得到了:
android.nfc.tech.NfcA
android.nfc.tech.Ndef我能够使用触发器应用程序格式化这张卡。
可以做些什么来格式化这个。
发布于 2014-08-27 17:54:58
NdefFormatable和Ndef标记技术是相互排斥的。或者您的标记尚未格式化(即它尚未准备存储NDEF消息),或者它已经准备好存储NDEF消息(并且已经包含(至少是一个空的) NDEF消息)。
因此,NdefFormatable只用于将初始的NDEF消息写入标记。
由于您的标记已经列出了android.nfc.tech.Ndef技术,它已经准备好存储NDEF消息,并且不需要进一步格式化。通过使用writeNdefMessage()对象的writeNdefMessage()方法,您可以简单地覆盖(假定标记不是只读的)任何现有的Ndef消息。例如,要将标记“格式化”为空NDEF消息,您可以执行以下操作:
Ndef ndefTag = Ndef.get(tag);
ndefTag.writeNdefMessage(new NdefMessage(new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null)));更新:在具有libnfc NFC堆栈的设备上,NdefFormatable和Ndef标记技术似乎不再是相互排斥的。格式化的标签会(有时?)被枚举为NdefFormatable和Ndef。在这种情况下,通常仍然首先尝试使用Ndef,只有在失败时才使用NdefFormatable对象。
发布于 2014-08-26 18:24:04
设备无法将标记格式化为NDEF。否则,你会得到android.nfc.tech.NdefFormatable的技术名单。
但是,您仍然可以以NDEF格式读写标记。
我猜触发器只是将一条空消息写入Ndef标记。
https://stackoverflow.com/questions/25512204
复制相似问题