我面临一种奇怪的行为。密钥A和B有权读取块0和0。 1& 2.(访问条件设置为:6E1789) 但我只能用密钥A读取,因为使用密钥B,Android应用程序检测到新的NFC标签并丢失了最后一个,所以她进入“onPause”然后“onNewIntent”,这一遍又一遍......
这里是我读取数据的函数(对于密钥A是相同的,但authenticateSectorWithKeyB当然是由authenticateSectorWithKeyA替换)。
public byte[] readOneSectorOneBlockKeyB(byte[] key, int sectorNumber, int blockNumber) throws MifareException {
byte[] data = null;
try {
boolean auth = false;
int bIndex = 0;
auth = mfc.authenticateSectorWithKeyB(sectorNumber, key);
if (auth) {
bIndex = 0;
bIndex = mfc.sectorToBlock(sectorNumber);
data = mfc.readBlock(bIndex + blockNumber);
} else {
throw new MifareException("Authentification failed");
}
} catch (IOException e) {
throw new MifareException(e.getLocalizedMessage());
}
return data;
}
系统没有捕获IOException ... 我不知道问题出在哪里?