我正在开发一款Android应用程序,该应用程序使用NFC读取RFID标签,但我使用以下代码获取错误代码为-5的IO异常:
Tag tag = params[0];
NfcV nfcvTag = NfcV.get(tag);
try {
nfcvTag.connect();
byte[] comReadTemp = new byte[]{
(byte) 0x20, // Flags
(byte) 0xAD, // Command: Get Temperature
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, // placeholder for tag UID
};
byte[] userdata = nfcvTag.transceive(comReadTemp);
//Log.d("socialdiabetes", "systeminfo: "+systeminfo.toString()+" - "+systeminfo.length);
//Log.d("socialdiabetes", "systeminfo HEX: "+bytesToHex(systeminfo));
userdata = Arrays.copyOfRange(userdata, 2, userdata.length - 1);
int tempCode = ((0x003 & userdata[2]) << 8) |
((0x0FF & userdata[1]) << 0);
double tempValue = 0.169 * tempCode - 92.7 - 0.169 * 32;
} catch (IOException e) {
e.printStackTrace();
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Error opening NFC connection!", Toast.LENGTH_SHORT).show();
}
});
return null;
}
有人可以帮助我吗?
答案 0 :(得分:0)
从NfcEe.open()返回值 - 这些是1:1映射
在nfc-extras中抛出EE_EXCEPTION_异常。
static final int EE_ERROR_EXT_FIELD = -5;
浏览Android 4.4.2源代码(我没有查看旧版本)显示,如果makeReadOnly()因任何原因失败,您将始终获得IOException。所以你在Android中发现了一个错误,或者至少与API文档不匹配。
似乎根本没有返回ErrorCodes.ERROR_INVALID_PARAM,因此makeReadOnly()方法通常应该永远不会返回false。
希望这能让你清楚明白。