Android NFC错误回调

时间:2016-03-15 22:36:18

标签: android android-intent nfc

我的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。

有一种检测扫描错误的方法吗?

0 个答案:

没有答案