Tag myTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Log.i("tag ID", myTag.getId().toString());
This gives me an ID like "[B@40521c40" but this ID changes every read.
Any help would be greatly appreciated.
Thanks.
9. Can NFC tags work with any NFC reader or smartphone? NFC tags can be read or encoded by any NFC reader or NFC compatible Smartphone (see updated list) which includes Android phones.
No, the UID of genuine Type 1 tags (from Broadcom or, formerly, Innovision) cannot be changed. That UID is a serial number that is permanently burned-in into read-only memory during the manufacturing process.
you still need to convert the byte to string:
private String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("0x");
if (src == null || src.length <= 0) {
return null;
}
char[] buffer = new char[2];
for (int i = 0; i < src.length; i++) {
buffer[0] = Character.forDigit((src[i] >>> 4) & 0x0F, 16);
buffer[1] = Character.forDigit(src[i] & 0x0F, 16);
System.out.println(buffer);
stringBuilder.append(buffer);
}
return stringBuilder.toString();
}
I ran in to similar issue and could resolve it. The issue is the conversion to string.
myTag.getId() returns byte array. You should convert these bytes to hex string. I used the following function that I found here in stackoverflow.com
final protected static char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
int v;
for ( int j = 0; j < bytes.length; j++ ) {
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With