2014-09-16 6 views
0

Я работаю над NFC. Я могу написать сообщение на теге. Все работает нормально, но когда я пытаюсь стереть тег, это не работает, и я не знаю, почему. Вот мой код:Как удалить сообщения NDEF из тега NFC?

Tag mytag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG); 
NdefFormatable formatable = NdefFormatable.get(mytag); 

if (formatable != null) { 
     formatable.connect(); 
     formatable.format(methodGetMsg()); 
     formatable.close(); 
} 

Я всегда получаю formatable значение null.

+2

возможно дубликат [Не способен форматировать NFC-карты с помощью NdefFormatable] (HTTP: // StackOverflow .com/questions/25512204/not-able-to-format-nfc-card-using-ndefformatable) –

ответ

1

Поскольку в вашем теге уже указана технология android.nfc.tech.Ndef, он уже готов хранить сообщение NDEF и не нуждается в дальнейшем форматировании. Вы можете просто перезаписать (учитывая, что тег не доступен только для чтения) любое существующее сообщение NDEF с помощью метода writeNdefMessage() объекта Ndef. Например. в «формат» в теге пустой сообщении ЦНК, вы могли бы сделать что-то вроде:

Ndef ndefTag = Ndef.get(tag); 
ndefTag.writeNdefMessage(new NdefMessage(new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null))); 

Взятые из here

+0

Обратите внимание, что это только перезаписывает первые несколько байтов сообщения NDEF. Используя некоторые трюки, вы можете восстановить почти все перезаписанное сообщение NDEF. Чтобы действительно перезаписать все данные, было бы неплохо сначала написать сообщение максимального размера NDEF тегу. –

+0

@NilsPipenbrinck если возможно, отредактируйте ответ с вашего комментария. Спасибо –

+0

Новый 'NdefMessage' с единственной записью требует, по крайней мере, API 16. Лучше пойдите с этим: https://stackoverflow.com/a/20144010/1199132 –

Смежные вопросы