IsoDep允许您通过ISO-14443-4连接与收发操作进行通信.通过该协议应用数据单元(APDU)进行交换.指定格式,您可以在
Wikipedia.找到一个描述
为了突击,要在具有特定应用程序标识符(AID)的智能卡上选择应用程序,您将执行以下APDU命令.结果只是表示ok(9000)或错误.
byte[] SELECT = {
(byte) 0x00, // CLA Class
(byte) 0xA4, // INS Instruction
(byte) 0x04, // P1 Parameter 1
(byte) 0x00, // P2 Parameter 2
(byte) 0x0A, // Length
0x63,0x64,0x63,0x00,0x00,0x00,0x00,0x32,0x32,0x31 // AID
};
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
IsoDep tag = IsoDep.get(tagFromIntent);
tag.connect();
byte[] result = tag.transceive(SELECT);
if (!(result[0] == (byte) 0x90 && result[1] == (byte) 0x00))
throw new IOException("could not select applet");
选择应用程序后,可以执行特定于应用程序的命令.程序通常用JavaCard编写,它遵循GlobalPlatorm规范.以下示例在上述选择的应用程序上执行返回至多11个字节的字节数组的方法4(0x04).然后将此结果转换为字