首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用NdefFormatable格式化NFC卡

无法使用NdefFormatable格式化NFC卡
EN

Stack Overflow用户
提问于 2014-08-26 17:54:19
回答 2查看 8.4K关注 0票数 2

我使用NdefFormatable类格式化我的NFC卡。守则是这样的:

代码语言:javascript
复制
NdefFormatable formatable=NdefFormatable.get(tag);

但我得到了可形成的引用为空。我检查了在get(tag)方法中运行的代码。它检查:

代码语言:javascript
复制
if (!tag.hasTech(TagTechnology.NDEF_FORMATABLE)) return null;

我为我的标签运行了"tag.getTechList()“。我得到了:

代码语言:javascript
复制
android.nfc.tech.NfcA
android.nfc.tech.Ndef

我能够使用触发器应用程序格式化这张卡。

可以做些什么来格式化这个。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-27 17:54:58

NdefFormatableNdef标记技术是相互排斥的。或者您的标记尚未格式化(即它尚未准备存储NDEF消息),或者它已经准备好存储NDEF消息(并且已经包含(至少是一个空的) NDEF消息)。

因此,NdefFormatable只用于将初始的NDEF消息写入标记。

由于您的标记已经列出了android.nfc.tech.Ndef技术,它已经准备好存储NDEF消息,并且不需要进一步格式化。通过使用writeNdefMessage()对象的writeNdefMessage()方法,您可以简单地覆盖(假定标记不是只读的)任何现有的Ndef消息。例如,要将标记“格式化”为空NDEF消息,您可以执行以下操作:

代码语言:javascript
复制
Ndef ndefTag = Ndef.get(tag);
ndefTag.writeNdefMessage(new NdefMessage(new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null)));

更新:在具有libnfc NFC堆栈的设备上,NdefFormatableNdef标记技术似乎不再是相互排斥的。格式化的标签会(有时?)被枚举为NdefFormatableNdef。在这种情况下,通常仍然首先尝试使用Ndef,只有在失败时才使用NdefFormatable对象。

票数 8
EN

Stack Overflow用户

发布于 2014-08-26 18:24:04

设备无法将标记格式化为NDEF。否则,你会得到android.nfc.tech.NdefFormatable的技术名单。

但是,您仍然可以以NDEF格式读写标记。

我猜触发器只是将一条空消息写入Ndef标记。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25512204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档