使用getTechList()不显示MifareClassic

时间:2016-11-27 23:22:55

标签: java android nfc mifare

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对象。

赞赏任何输入

0 个答案:

没有答案