I'm trying to communicate between a Samsung Galaxy S3 and a smartcard that supports NfcA
and IsoDep
(Mifare DESFire EV1). To do this, I enabled forgeground dispatch and started a task when a tag is discovered. The code in the task looks like this:
IsoDep isoDep = IsoDep.get(tag);
byte[] selectCommand = {
(byte)0x00, // CLA
(byte)0xA4, // INS
(byte)0x04, // P1
(byte)0x00, // P2
(byte)0x0A, // LC
(byte)0x01,(byte)0x02,(byte)0x03,(byte)0x04,(byte)0x05,(byte)0x06,(byte)0x07,(byte)0x08,(byte)0x09,(byte)0xFF, // AID
(byte)0x7F // LE
};
try {
isoDep.connect();
byte[] response = isoDep.transceive(selectCommand);
String result = bytesToString(response);
isoDep.close();
return result;
} catch (Exception e) {
e.printStackTrace();
}
The transceive method throws this exception:
java.io.IOException: Transceive failed
All other methods of IsoDep
(like getTimeout()
) can be executed without error. Increasing the timeout doesn't change the behaviour. The applet with the AID in the select command is present on the card. I also tried to use the NfcA
class. But then I get the exception "tag is lost".
Could the Galaxy S3 be the problem?
I just tried the same app on another phone and it worked without any problems. The Galaxy S3 is indeed the problem.
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