如何在不覆盖现有值的情况下从两个活动中将值写入NFC标签?

时间:2018-03-28 18:54:10

标签: java android nfc overwrite ndef

我正在尝试编写一个Android应用程序,它有两个活动,将多个值(字符串/文本)写入同一个NFC标记。我已设法将一个活动写入标记,但如何阻止第二个活动覆盖第一个活动的值?

const first = () => {
    const greet = "Hi";
    const second = () => {
        alert("greet");
    }
    return second; 
}

first()(); // does work


//Alternative
const secondTime = () => {
    const greet = "Hi";
    const second = () => {
        alert("greet");
    }
    return second(); 
}

secondTime(); 

有办法吗?

1 个答案:

答案 0 :(得分:0)

NFC论坛类型标记只能包含一条NDEF消息。因此,方法ndef.writeNdefMessage(ndefMessage)将始终覆盖任何现有的NDEF消息,并将新消息作为参数ndefMessage传递。

当然,NDEF消息可能包含您喜欢的NDEF记录(或者实际上适合您的标记)。

如果您想保留现有数据,则需要首先阅读现有的NDEF消息,例如由

Parcelable[] parcelables = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (parcelables != null && parcelables.length > 0) {
    NdefMessage ndefMessage = (NdefMessage)parcelables[0];
    ...

然后,您可以解析此消息并保留/删除要保留/删除的部分(NDEF记录或数据元素)。最后,您可以将新部件添加到该消息中,然后再将整个消息写入标签。