Hello stackoverflow用户!
我在开发使用NFC卡的Android开发方面遇到了困难,尤其是Mifare Classic 4k卡。
我的主要问题是虽然我知道卡片是这种技术的机器人Tag.getTechList()只会为我的卡片返回一种技术:NfcA。
我无法尝试使用Mifare Classic类,因为在我的Tag对象上使用时,get()方法将返回null。
这似乎是一个困难的问题我无法找到任何先前的问题。任何帮助或洞察为什么android无法检测到我的卡是MifareClassic启用非常感谢。
如果有人对使用NfcA访问Mifare Classic卡中的扇区和块有任何见解,可以使用transcieve()方法,这可能是一个良好的开端。
现在我一直在试图从打印在卡上的卡上获取ID,我相信应该在卡的第一个扇区/块之一。
我的测试卡的打印ID为93825
并且像这样的代码......
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
byte[] uid = tag.getId();
for (byte aTagId : uid) {
tagInfo += Integer.toHexString(aTagId & 0xFF)+ " ";
}
for (byte b : uid){
tagInfo += Integer.toString(b & 0xFF);
}
tagInfo将返回一个字符串:be 50 13 51 190801981 我的卡号:93825 正如我之前所说的那样
MifareClassic mfc = MifareClassic.getTag(tag);
即使我确定该卡是这种类型,也将返回null。我知道,因为从Playstore NFC TagInfo下载应用程序会成功声明Tag Type是Mifare Classic 4k。
然而像
这样的一行NfcA nfca = NfcA.get(tag);
将成功返回NfcA对象。
赞赏任何输入