我已经在Mifare卡中写入了Ndef数据,我希望它能够被任何支持NFC的android设备所读取,不管if是否支持Mifare卡。
有些手机,如Honor8pro(没有Mifare的支持)可以读取标签,而三星J7等其他手机则无法读取标签。
我把卡片数据附在一张图片上。

我使用了一个非标准的密钥,使第2区及以后成为私有的。
public void onTagDiscovered(Tag tag) {
// This is getting called for all devices
Ndef ndef = Ndef.get(tag);
}ndef在三星j7中为null,而在Honor 8 pro中有一个对象。
你知道为什么会发生这样的事情吗?或者用其他方法来实现这一点?
发布于 2019-07-29 21:03:18
请注意,在一些移动电话上,操作系统不报告Mifare支持,尽管Mifare经典卡可以读得很好。安卓应该报告com.nxp.mifare系统的功能,如果有Mifare的支持,但有些手机没有。
因此,像用Tapkey进行NFC检查这样的一些应用程序有时会报告Mifare支持缺失,尽管它是存在的。要明确的是,这不是这些应用的错,而是操作系统的错。一些较老的Moto手机也有这个问题。根据您的描述,荣誉8专业人员也有同样的问题,否则它将不会返回一个Ndef实例。另一方面,三星J7实际上可能不支持Mifare,这就是它不返回Ndef实例的原因。
从你的问题我推断,你说的是Mifare经典卡。请注意,与Mifare经典不同,其他Mifare卡,即Mifare DESFire卡,可以充当4型NDEF标记,因此甚至可以被不支持专有Mifare经典版的手机读取。这是因为类型4 NDEF标记是标准化的。它们基于标准化的ISO 7816协议,并得到几乎所有NFC支持的手机的支持。
因此,长话短说,您可能无法阅读Mifare的经典卡与手机真的没有Mifare的支持,而阅读卡,如Mifare DESFire应该工作得很好。DESFire的其他优点是,它们更安全、更大、更灵活。最大的缺点是,它们的价格要高得多。
https://stackoverflow.com/questions/57258150
复制相似问题