Я пытаюсь установить связь между Samsung Galaxy S3 и смарт-картой, поддерживающей NfcA
и IsoDep
(Mifare DESFire EV1). Для этого я включил диспетчеризацию forgeground и запускал задачу при обнаружении тега. Код в задаче выглядит так:
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();
}
Метод приема выдает это исключение:
java.io.IOException: Transceive failed
Все остальные методы IsoDep
(например, getTimeout()
) могут выполняться без ошибок. Увеличение тайм-аута не меняет поведение. Апплет с AID в команде select присутствует на карточке. Я также пытался использовать класс NfcA
. Но затем я получаю исключение «тег потерян».
Может проблема в Galaxy S3?
00 A4 04 00 07 D2 76 00 00 85 01 01 00
командный APDU? - person vlp   schedule 19.10.2015905A00000300000000
? - person vlp   schedule 20.10.2015