无法格式化NdefFormatable NFC标签

时间:2018-08-10 03:21:39

标签: android format nfc mifare ndef

我正在开发使用NFC的Android应用程序。我有一些带有以下技术列表的NFC卡:

  • android.nfc.tech.NfcA
  • android.nfc.tech.MifareClassic
  • android.nfc.tech.NdefFormatable

但是我不能使用NdefFormatable.format(message)格式化那些标签。相反,我得到了IOException。

代码:

try {
    NdefRecord[] records1 = { createRecord("000000") };
    NdefMessage message1 = new NdefMessage(records1);
    formatable.format(message1);
    res = 1;
}

stacktrace提供了以下日志:

W/System.err: java.io.IOException
W/System.err:     at android.nfc.tech.NdefFormatable.format(NdefFormatable.java:131)
W/System.err:     at android.nfc.tech.NdefFormatable.format(NdefFormatable.java:94)
                  at com.example.peng.nfcreadwrite.MainActivity.write(MainActivity.java:170)
W/System.err:     at com.example.peng.nfcreadwrite.MainActivity.access$000(MainActivity.java:27)
                  at com.example.peng.nfcreadwrite.MainActivity$1.onClick(MainActivity.java:60)
                  at android.view.View.performClick(View.java:6877)
W/System.err:     at android.widget.TextView.performClick(TextView.java:12651)
                  at android.view.View$PerformClick.run(View.java:26069)
                  at android.os.Handler.handleCallback(Handler.java:789)
                  at android.os.Handler.dispatchMessage(Handler.java:98)
W/System.err:     at android.os.Looper.loop(Looper.java:164)
                  at android.app.ActivityThread.main(ActivityThread.java:6938)
                  at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

也许有人可以给我一些建议,因为我对Android的NFC还是陌生的。

编辑

这是我使用Mifare Classic Tool拍摄的屏幕截图。对于扇区4到8,显示“未找到密钥(或无效扇区)”:

1 个答案:

答案 0 :(得分:1)

Android上的MIFARE Classic标签的NDEF格式化过程期望标签为空,并且可以使用默认的传输密钥(FFFFFFFFFFFF)或某些标准密钥(扇区0的MAD密钥,NDEF)进行访问(读取和写入)其他行业的关键)。如果无法访问该标签的某些扇区,则Android将无法格式化该标签以用于NDEF。

因此,您的标签无法用于您的目的。虽然您可以手动设置标签格式以跳过那些锁定的扇区。我不太确定Android是否能够使用这些标签。