【问题标题】:Note5 read Mifare classic card UIDNote5读取Mifare经典卡UID
【发布时间】:2019-09-10 07:06:19
【问题描述】:

我正在开发一个仅读取 MIFARE Classic 卡的 UID 的应用程序。但是,每次我在 Galaxy note 5 上扫描卡时,都会收到一条消息“不支持 NFC 标签类型”,并且 UID 不显示。

我知道是因为我手机的 NFC 芯片与 Mifare Classic 不兼容,但有什么办法可以解决吗?

static void showToast() {
    if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) {
        Tag tag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);

        Toast.makeText(MainActivity.this, 
                "The UID for this card is:" + bin2hex(tag.getId()), 
                Toast.LENGTH_LONG)
                .show();
    }
}

static String bin2hex(byte[] data) {
    return String.format("%0" + (data.length * 2) + "X", new BigInteger(1, data));
}

提前致谢。

【问题讨论】:

  • 您是否注意为 ACTION_TECH_DISCOVERED 注册意图过滤器,向 xml 提供技术列表,声明使用权限 android.permission.NFC,声明使用功能 android.hardware.nfc 并调用活动的 onNewIntent() 回调中的 showToast ?
  • 是的,我都做了。

标签: java android nfc mifare


【解决方案1】:

Galaxy Note 5 不支持 Mifare Classic。见这里:https://www.shopnfc.com/en/content/7-nfc-compatibility#samsung
Mifare Classic 是 NXP 的专有产品,因此无论三星使用 NXP 芯片的哪款设备(Galaxy Note 2 Note 8、Note 9)都支持 Mifare classic。
由于它需要更改硬件,因此您无法在 Note 5 上使用它。

【讨论】:

  • 非常感谢。我从 Play 商店下载了一个应用程序,它在我的 mifare 卡上运行良好,你知道他们是如何做到的吗?
  • 我可以知道应用名称
  • 恩智浦 DWM 应用程序
  • 此线程stackoverflow.com/questions/35906081/… 表示在root 手机上可能启用对Mifare classic 的支持。我没有三星对 NFC 框架的调整代码来检查他们在哪里禁用了支持。这些 NXP 应用程序很可能正在使用前台调度系统。确认一下,您能否判断 NXP DWM 应用程序是否检测到标签,即使不在前台也是如此?另一种可能是您使用的卡有 AAR,要确认使用 NXP TagInfo 应用程序获得的共享卡转储。
  • 它只在前台工作,当我在后台尝试它时,出现错误消息“NFC tag type not supported”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多