【发布时间】:2018-08-10 03:21:38
【问题描述】:
我正在开发一个使用 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;
}
堆栈跟踪给出了这些日志:
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 “未找到密钥(或死扇区)”:
【问题讨论】:
-
该标签以前是否用于其他用途?会不会是 MIFARE Classic 卡的某些扇区被除了传输密钥之外的其他密钥锁定了?您可能想尝试使用一些通用标签阅读器应用程序(例如我的 NFC TagInfo 或 NXP TagInfo)来读取标签,以验证所有扇区都可以使用传输密钥写入。
-
很抱歉回复晚了,这些卡是我工作场所使用的某个第三方供应商提供的,他们说这是一张空白卡。我使用 Mifare Classic Tool 进行了检查,发现所有卡的扇区 4 到 8 都显示消息未找到密钥(或死扇区)。 (请参阅我更新的问题以获取我检查的卡的屏幕截图)
-
您好,我也遇到了同样的问题,并在这里发了一个问题stackoverflow.com/questions/61784673/…你能分享一个完整的解决方案吗?
标签: android format nfc mifare ndef