Android NFC 默认情况下只允许读取一个目标卡片。如果需要实现多卡读取,需要进行以下步骤:
1.设置NfcAdapter.FLAG_READER_NFC_A和NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK标志:
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.enableReaderMode(this, new NfcAdapter.ReaderCallback() {
@Override
public void onTagDiscovered(Tag tag) {
// ...
}
}, NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null);
2.在onTagDiscovered()回调方法中处理多卡逻辑:
@Override
public void onTagDiscovered(Tag tag) {
byte[] uid = tag.getId();
// 对比读到卡的UID是否在之前已读到过的卡列表中
boolean matched = false;
for (byte[] storedUid : mCardList) {
if (Arrays.equals(storedUid, uid)) {
matched = true;
break;
}
}
// 如果在卡列表中已经存在,则不再处理
if (matched) {
return;
}
// 否则将UID添加到卡片列表并进行相关处理
mCardList.add(uid);
// ...
}
其中mCardList是一个存放已读卡片UID的列表。
通过以上两个步骤,即可实现在一次贴卡的情况下读取多张卡片。