我正在尝试将一些字节写入特定块。我的阅读命令工作正常,我可以使用下面的代码读取我的标签的任何块:
command = new byte[]{
(byte) 0x02, // Flags
(byte) 0x23, // Command: Read multiple blocks
(byte) 0x09, // First block (offset)
(byte) 0x03 // Number of blocks // MAX READ SIZE: 32 blocks:1F
};
byte[] data = nfcvTag.transceive(command);
当我尝试使用下面的代码编写时,我的应用程序崩溃了。
Write = new byte[]{
(byte) 0x02, // Flags
(byte) 0x21, // Command: Write 1 blocks
(byte) 0x5A, // First block (offset)
(byte) 0x41 // Data
};
nfcvTag.transceive(Write);
我在AsyncTask中执行此操作并获取java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
异常。
任何提示?标签是STMicroelectronics M24LR04E-R
答案 0 :(得分:1)
想出来。我只写了8位数据,而标签每块32位。添加了3 0x00&s,写入成功。
Write = new byte[]{
(byte) 0x02, // Flags
(byte) 0x21, // Command: Write 1 blocks
(byte) 0x5A, // First block (offset)
(byte) 0x41,
(byte) 0x00,
(byte) 0x00,
(byte) 0x00
};
nfcvTag.transceive(Write);