我面临着一种奇怪的行为。密钥 A 和 B 有权读取块 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 ...我不知道问题出在哪里?