gpt4 book ai didi

android - 无法使用 NdefFormatable 格式化 NFC 卡

转载 作者:行者123 更新时间:2023-11-29 14:48:53 28 4
gpt4 key购买 nike

我正在使用 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

我能够使用 Trigger 应用程序格式化这张卡。

如何格式化它。

最佳答案

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

因此 NdefFormatable 仅用于将初始 NDEF 消息写入标签。

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

Ndef ndefTag = Ndef.get(tag);
ndefTag.writeNdefMessage(new NdefMessage(new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null)));

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

关于android - 无法使用 NdefFormatable 格式化 NFC 卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512204/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com