【发布时间】:2021-06-28 09:06:13
【问题描述】:
public boolean writeTag(Tag tag, NdefMessage message) {
int size = message.toByteArray().length;
try {
Ndef ndef = Ndef.get(tag);
if (ndef != null) {
ndef.connect();
if (!ndef.isWritable()) {
return false;
}
if (ndef.getMaxSize() < size) {
return false;
}
ndef.writeNdefMessage(message);
return true;
} else {
NdefFormatable format = NdefFormatable.get(tag);
if (format != null) {
try {
format.connect();
format.format(message);
return true;
} catch (IOException e) {
return false;
}
} else {
return false;
}
}
} catch (Exception e) {
return false;
}
}
当我调试时,我得到了:
this = {NFCWrite@9357}
tag = {Tag@9386} "TAG: Tech [android.nfc.tech.IsoDep, android.nfc.tech.NfcA]"
message = {NdefMessage@9417} "NdefMessage [NdefRecord tnf=2 type=6A7A6A736A64646A64 payload=6A7A6A736A64646A64]"
size = 21
ndef = null
format = null
mTechStringList = {String[2]@9587}
0 = "android.nfc.tech.IsoDep"
1 = "android.nfc.tech.NfcA"
我很想知道为什么
- ndef 总是返回 null
- 格式总是返回 null
因此,ndef.connect() 无法连接。 然后我使用 NdefFormatable 格式获取标记 但仍然为空。
【问题讨论】: