我的Android应用程序可以使用空NFC标签(直接从制造商处收到)。在第一次使用时,标签使用NDEF内容编写。
扫描标签时,我需要区分3种情况:
1)空标签,默认来自制造商(无内容)
2)NDEF标记,内容为text/plain
。
3)相同的NDEF标签,但是出现扫描错误。
第2项工作正常,但我需要区分1到3。
这是我的代码:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String recordContent = null;
if (intent.hasExtra(NfcAdapter.EXTRA_TAG)) {
Parcelable[] parcelables = intent.getParcelableArrayExtra(EXTRA_NDEF_MESSAGES);
if (parcelables != null && parcelables.length > 0) {
NdefRecord[] ndefRecords = ((NdefMessage) parcelables[0]).getRecords();
NdefRecord ndefRecord = ndefRecords[0];
byte[] payload = ndefRecord.getPayload();
if (payload.length > 0) {
String textEncoding = ((payload[0] & 128) == 0) ? "UTF-8" : "UTF-16";
int languageSize = payload[0] & 0063;
recordContent = new String(payload, languageSize + 1, payload.length - languageSize - 1, textEncoding);
}
}
// Do something with recordContent
}
}
我尝试了什么:
1)验证了parcelables
var。但在两种情况下都是空的(空标签和扫描错误)
2)intent
的操作,但在两种情况下都是TAG_DISCOVERED
。正确读取标记(使用NDEF内容)时,操作为EXTRA_NDEF_MESSAGES
。
3)始终收到标签UID。
有一种检测扫描错误的方法吗?