我刚开始使用NFC应用程序,并尝试根据用户操作写入读取和删除内容。我有一些我无法理解的事情。
关于SIZE
我有标签,我写了一些数据。但是当我试图在同一个标签上再次写入相同数量的数据时,我无法编写它。它给出的尺寸大于最大容量。是否有一些方法因为它的尺寸更大或者还有其他方法可以减小尺寸。
关于清理数据
我还想删除我在标签上写的数据。有没有办法擦除数据,或者我需要像写数据一样写空字符串。
任何身体都可以帮助我。下面是我编写数据的代码
private boolean writeTag(Tag tag)
{
NdefMessage message = new NdefMessage(createNdefRecords());
try
{
// see if tag is already NDEF formatted
Ndef ndef = Ndef.get(tag);
if (ndef != null)
{
ndef.connect();
if (!ndef.isWritable())
{
displayMessage("Read-only tag.");
return false;
}
// work out how much space we need for the data
int size = message.toByteArray().length;
if (ndef.getMaxSize() < size)
{
displayMessage("Tag doesn't have enough free space.");
return false;
}
ndef.writeNdefMessage(message);
displayMessage("Tag written successfully.");
return true;
}
}
catch (Exception e)
{
displayMessage("Failed to write tag");
}
return false;
}
private void addTempData()
{
data.add("10");
data.add("1");
data.add("1");
data.add("245");
data.add("40238");
data.add("0");
}
public NdefRecord[] createNdefRecords()
{
NdefRecord[] ndefRecords = new NdefRecord[data.size()];
for(int i=0; i < data.size(); i++)
{
NdefRecord record = getNdefRecord(data.get(i));
ndefRecords[i] = record;
}
return ndefRecords;
}
private NdefRecord getNdefRecord(String data)
{
NdefRecord record = new NdefRecord(NdefRecord.TNF_EXTERNAL_TYPE, MimeType.TYPE.substring(1).getBytes(), new byte[] {}, data.getBytes());
return record;
}