我正在研究一種可在NFC標籤上讀寫的android應用程序。 閱讀我已經寫了一些東西的標籤沒有問題,但是當我使用空白標籤時,我很難在HEX代碼中讀取標籤的UID。Android NFC java.io.IOException:收發失敗
我正在使用mifare經典標籤,並且直接讀取帶有readblock方法的十六進制UID。奇怪的是,它在我得到UID的調試器模式下工作正常。但是,當我試圖不debbuger我得到以下異常:
java.io.IOException: Transceive failed
這裏是我的方法來讀取到標籤:
static String getUID(Intent intent) {
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
MifareClassic mc = MifareClassic.get(tagFromIntent);
try {
mc.connect();
Log.i("connect", "ok");
} catch (IOException e) {
// TODO Auto-generated catch block
Log.i("connect", "nok");
e.printStackTrace();
}
try {
boolean secA = mc.authenticateSectorWithKeyA(0, mc.KEY_DEFAULT);
Log.i("secA", "ok");
} catch (IOException e) {
Log.i("secA", "nok");
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
boolean secB = mc.authenticateSectorWithKeyB(0, mc.KEY_DEFAULT);
Log.i("secB", "ok");
} catch (IOException e) {
Log.i("secB", "nok");
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] uidBytes = null;
try {
uidBytes = mc.readBlock(0);
Log.i("bytes", "ok");
} catch (IOException e) {
Log.i("bytes", "nok");
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mc.close();
Log.i("close", "ok");
} catch (IOException e) {
Log.i("close", "nok");
// TODO Auto-generated catch block
e.printStackTrace();
}
if (uidBytes != null) {
String uid = HexToString(uidBytes);
return uid;
}
else { return "Repasser le tag";}
}
我不知道如何解決這個問題,因爲它工作在調試模式。
如何使用'Log.d()'方法來找出調試和運行之間的區別?另外,你可以顯示你的broadcastreceiver的'AndroidManifest.xml'聲明嗎? – tolgap