我正在开发使用NFC的Android应用程序。我有一些带有以下技术列表的NFC卡:
但是我不能使用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,显示“未找到密钥(或无效扇区)”:
答案 0 :(得分:1)
Android上的MIFARE Classic标签的NDEF格式化过程期望标签为空,并且可以使用默认的传输密钥(FFFFFFFFFFFF
)或某些标准密钥(扇区0的MAD密钥,NDEF)进行访问(读取和写入)其他行业的关键)。如果无法访问该标签的某些扇区,则Android将无法格式化该标签以用于NDEF。
因此,您的标签无法用于您的目的。虽然您可以手动设置标签格式以跳过那些锁定的扇区。我不太确定Android是否能够使用这些标签。