未检测到写入 mifare 1k 卡中的 Ndef 数据

Ndef data written in mifare 1k card not getting detected

我已经在 Mifare 卡中写入了 Ndef 数据,我希望任何支持 NFC 的 android 设备都可以读取它,无论是否支持 Mifare 卡。

部分手机如荣耀8 pro(不支持Mifare)可以读取标签,但其他手机如三星J7无法读取。

我在图片中附加了卡片数据。 我已使用非标准密钥

将扇区 2 及之后的扇区设为私有
public void onTagDiscovered(Tag tag) {
// This is getting called for all devices
 Ndef ndef = Ndef.get(tag);
}

ndef在三星j7中为null,而在荣耀8 pro中有对象

知道为什么会发生这种情况或有任何其他实现方式吗?

请注意,在某些手机上 OS 不报告 Mifare 支持,尽管可以很好地读取 Mifare Classic 卡。如果存在 Mifare 支持,Android 应该报告 com.nxp.mifare 系统功能,但有些手机不支持。

因此,NFC Check by Tapkey 等某些应用有时会报告不支持 Mifare,尽管它存在。需要明确的是,这不是这些应用程序的错,而是 OS 的错。已知一些较旧的 Moto 手机存在此问题。根据你的描述,荣耀8 pro似乎也有同样的问题,否则不会return一个Ndef实例。另一方面,三星 J7 可能实际上并不支持 Mifare,这就是为什么它没有 return Ndef 实例。

从你的问题我推断,你在谈论 Mifare Classic 卡。请注意,与 Mifare Classic 不同的是,其他 Mifare 卡,即 Mifare DESFire 卡,可以充当 Type 4 NDEF 标签,因此甚至可以被不支持专有 Mifare classic 的手机读取。这是因为 Type 4 NDEF 标签是标准化的。它们基于标准化的 ISO 7816 协议,几乎所有支持 NFC 的手机都支持它们。

长话短说,您可能无法使用确实不支持 Mifare 的手机读取 Mifare 经典卡,同时读取像 Mifare 这样的卡DESFire 应该可以正常工作。 DESFire 的其他优点是,它们更安全、尺寸更大且更灵活。最大的缺点是,它们要贵得多。