0

我正在尝试制作一个 Android 应用程序来编写 NFC 标签。为了了解如何做到这一点,我下载了一个示例。但是,该示例不起作用。它说它无法进行身份验证。这只能意味着它为这种类型的卡使用了不正确的密钥。奇怪的是,甚至我的空白卡上的KEY_DEFAULTKEY_MIFARE_APPLICATION_DIRECTORY键都不起作用。Mifare 是否以任何方式更改了密钥?

编辑:这是我的代码。

            /* Authenticate the MAD Sector, sector 1, with key A */
        succes = mClassic.authenticateSectorWithKeyA(
                1, key);
        if (succes) {
            /* Authentication succeeded */

            /*
             * This will read a 16-byte block in this sector
             * It is an I/O operation and will block until complete.
             * It must not be called from the main application thread.
             **/
            b.append(mClassic.readBlock(1), 0, 16);
            b.append(mClassic.readBlock(2), 0, 16);
            b.append(mClassic.readBlock(3), 0, 16);
            data = b.toByteArray();
        }
        /* Authentication failed */
        else
            sb.append("Authentication failed");
        mClassic.close();

    }

我已经使用以下键进行了尝试:

MifareClassic.KEY_DEFAULT
MifareClassic.KEY_MIFARE_APPLICATION_DIRECTORY
00 00 00 00 00 00
ff ff ff ff ff ff

都无济于事。。

4

2 回答 2

2

我对 Ubiqconn 平板电脑不熟悉。我要做的第一件事是检查设备中的 NFC 实现是否真正支持 MIFARE。在您的主要活动中onCreate()添加:

public void onCreate(Bundle bundle) {
  ...
  if (!getPackageManager().hasSystemFeature("com.nxp.mifare")) {
    Toast.makeText(this, "No MIFARE support!", Toast.LENGTH_LONG).show();
  }
}
于 2012-09-24T14:53:22.733 回答
1

您的应用程序中存在错误,或者密钥已被自定义。使用 NFC TagInfo 之类的应用程序检查您是否可以使用默认密钥读取/写入卡片。如果它不起作用,请联系向您出售卡片的人并询问他们的钥匙是什么。

于 2012-09-24T09:11:36.940 回答