当我试图删除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
}

最佳答案

我认为您可能不理解在标记上的ndef消息上下文中格式化意味着什么。确切的方法因标记而异,但在一天结束时,ndef的标记“格式化”只包括将ndef幻数和一些元数据放在某个位置。
在mifare ultralight的情况下,magic数字放在一次性可编程内存中,因此在格式化之后实际上不可能为ndef格式化ultralight,尽管假设标记未被锁定,您可以向其写入不同的ndef消息。一般来说,android设备似乎认识到了这一点,并且不允许您对已经格式化的ultralights使用ndeformatable。至于其他标记,如果一个ndef格式的标记将枚举ndeformatable(即使它是一个未锁定的topaz或其他可以再次写入格式化位的标记),那么它是高度不一致的。
如果您想用android覆盖ndef数据,最可靠的方法是使用ndef用一个新的ndef消息覆盖现有的ndef消息。

关于android - 如何在Android中清除NFC标签数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26364836/

10-12 00:32