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