【问题标题】:How to erase NFC tag data in android?如何在android中擦除NFC标签数据?
【发布时间】:2014-10-14 15:41:39
【问题描述】:

我在尝试擦除 NFC 标签中的数据时遇到问题。我正在使用 MifareUltralight 类型的 NFC 标签。请有人帮我找到解决方案。这是我的代码。我从here得到这个代码

if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
    mytag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
}

NdefFormatable formatable = NdefFormatable.get(mytag);

if (formatable != null) { // Here I'm getting formatable null
    try {
        formatable.connect();

        try {
            formatable.format(methodGetMsg());
        } catch (Exception e) {
            // let the user know the tag refused to format
        }
    } catch (Exception e) {
        // let the user know the tag refused to connect
    } finally {
        try {
            formatable.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
} else {
    // let the user know the tag cannot be formatted
}

【问题讨论】:

标签: android nfc nfc-p2p


【解决方案1】:

我认为您可能不理解在标签上的 NDEF 消息的上下文中格式的含义。确切的方法因标签而异,但归根结底,为 NDEF “格式化”标签仅包括将 NDEF 幻数和一些元数据放在某个位置。

在 MIFARE Ultralight 的情况下,幻数被放置在一次性可编程内存中,因此在格式化 Ultralight 后实际上是不可能为 NDEF 格式化的,尽管您可以写入不同的 NDEF 消息到它假设标签未锁定。一般来说,Android 设备似乎可以识别这一点,并且不会让您将 NdefFormatable 与已经格式化的 Ultralight 一起使用。至于其他标签,如果一个 NDEF 格式的标签将枚举 NdefFormatable ,即使它是一个未锁定的 Topaz 或其他可以再次写入格式位的标签,这是高度不一致的。

如果你想用 Android 覆盖 NDEF 数据,你最可靠的选择是使用 Ndef 用新的 Ndef 消息覆盖现有的 Ndef 消息。

【讨论】:

    【解决方案2】:

    由于您的标签已经列出了 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)));
    

    答案来自here 感谢 Michael Roland

    【讨论】:

      【解决方案3】:

      可能是您的设备不支持 MifareUltralight 格式。

      开发者文档中指出,没有强制的标签集,所有带有 NFC 的 Android 设备都必须支持 NdefFormatable 1

      这是因为标签格式使其与 NDEF 兼容通常需要专有知识2

      【讨论】:

        猜你喜欢
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多