【发布时间】:2018-12-14 09:53:56
【问题描述】:
我一直在查看全球平台规范,了解如何为我的应用程序定义一个将使用主机卡仿真 (HCE) 的 APDU。我的应用程序应该让一部手机通过 HCE 表现得像 NFC 标签,另一部手机充当 NFC 阅读器。我试图在手机之间传输的任意数据只是一个包含 ID 号的简单字符串,但我不确定如何在代码中应用它。我已经查看了不同字节命令的含义,但我真的不确定如何应用它。
我想我需要使用 STORE DATA 命令,但我不确定如何直观地做到这一点,也不太明白。我目前关注的是 HCE 方面而不是读者方面。
这是迄今为止我在 HCE 方面的代码
public class SecondaryActivity extends HostApduService {
@Override
public void onDeactivated(int reason) {
}
@Override
public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) {
String inboundApduDescription;
byte[] responseApdu;
if (Arrays.equals(AID_SELECT_APDU, commandApdu)) {
inboundApduDescription = "Application selected";
Log.i("HCEDEMO", inboundApduDescription);
byte[] answer = new byte[2];
answer[0] = (byte) 0x90;
answer[1] = (byte) 0x00;
responseApdu = answer;
return responseApdu;
}
return commandApdu;
}
private static final byte[] AID_SELECT_APDU = {
(byte) 0x00,
(byte) 0xA4,
(byte) 0x04,
(byte) 0x00,
(byte) 0x07,
(byte) 0xF0, (byte) 0x39, (byte) 0x41, (byte) 0x48, (byte) 0x14, (byte) 0x81, (byte) 0x00,
(byte) 0x00
};
private static final byte[] STORE_DATA = {
(byte) 0x00,
(byte) 0xA4,
(byte) 0x04,
(byte) 0xA5, // forproprietary data according to the spec
(byte) 0xE2,
(byte) 0x66, (byte) 0x39, (byte) 0x41, (byte) 0x48, (byte) 0x14, (byte) 0x81, (byte) 0x00,
(byte) 0x00
};
private static final byte[] INSTALL = {
(byte) 0x00,
(byte) 0x00,
};
}
如何将数据从 HCE 手机发送到读卡器手机? 我错过了什么? 需要做什么?
【问题讨论】:
标签: android nfc uniqueidentifier apdu hce