我刚刚启动我的 NFC 应用程序并尝试根据用户操作写入读取和删除内容。我有一些我无法理解的事情。
关于尺寸
我有我写了一些数据的标签。但是当我试图在同一个标签上再次写入相同数量的数据时,我无法写入它。它给出的尺寸大于最大容量。是否有一些方法,因为它的大小更大,或者有其他方法来减小大小。
关于擦除数据
我还想删除我在标签上写过的数据。有什么方法可以擦除数据,或者我需要像我写数据的方式写空字符串。
任何机构都可以帮助我。下面是我写数据的代码
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;
}