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

标签 android nfc mifare ndef

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

部分手机如Honor 8 pro(不支持Mifare)可以读取标签,但其他手机如Samsung J7则无法读取。

我在图像中附加了卡片数据。 Mifare Data Dump 我已使用非标准 key 将扇区 2 及之后的扇区设为私有(private)

public void onTagDiscovered(Tag tag) {
// This is getting called for all devices
 Ndef ndef = Ndef.get(tag);
}

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

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

最佳答案

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

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

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

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

关于android - 未检测到写入 mifare 1k 卡中的 Ndef 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57258150/

相关文章:

linux - BackTrack 5 R3 中的 ACR120U 读卡器

android - 使用 espresso 和 ui automator 在 android studio 2.3 中生成测试覆盖率报告

android - 无法解析 : library

android - 无法解析代码中无处引用的支持版本的消息

android - 来自 http url 的在线视频流,在 android 应用程序中具有缓存

android - 从 NFC 启动的 Activity/应用程序从未出现在最近的应用程序列表中

android - 在 Android 上使用 NFC 软件卡模拟控制完整的 APDU

python - 更改 MIFARE Classic 中扇区的身份验证 key

usb - 智能卡读写器 ACR122U 没有唯一的序列号

uniqueidentifier - 用于从 MIFARE DESFire 获取 UID 的 APDU?