Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用ACR122以卡模拟模式将数据写入Nexus 4_Android_Nfc_Apdu_Hce - Fatal编程技术网

Android 使用ACR122以卡模拟模式将数据写入Nexus 4

Android 使用ACR122以卡模拟模式将数据写入Nexus 4,android,nfc,apdu,hce,Android,Nfc,Apdu,Hce,我正试图通过NFC(即卡模拟模式)向Nexus 4发送一些数据。我尝试了许多命令apdu,比如编写和更新apdu,但无法让它们工作 我想说的是,在执行select APDU命令后,我想向手机发送一些数据(这不是AID) 提前感谢, BaderHCE模拟卡将准确理解HCE应用程序的APDU服务处理的那些命令。例如,如果您的HCE服务的processCommandApdu()回调方法如下所示: final static byte[] SW_NO_ERROR = new byte[]{ (byte)0

我正试图通过NFC(即卡模拟模式)向Nexus 4发送一些数据。我尝试了许多命令apdu,比如编写和更新apdu,但无法让它们工作

我想说的是,在执行select APDU命令后,我想向手机发送一些数据(这不是AID)

提前感谢,


Bader

HCE模拟卡将准确理解HCE应用程序的APDU服务处理的那些命令。例如,如果您的HCE服务的
processCommandApdu()
回调方法如下所示:

final static byte[] SW_NO_ERROR = new byte[]{ (byte)0x90, (byte)0x00 };
final static byte[] SW_INCORRECT_P1P2 = new byte[]{ (byte)0x6A, (byte)0x86 };
final static byte[] SW_INS_NOT_SUPPORTED = new byte[]{ (byte)0x6D, (byte)0x00 };
final static byte[] SW_ERR_UNKNOWN = new byte[]{ (byte)0x6F, (byte)0x00 };

@Override
public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
    if (apdu.length >= 4) {
        if ((apdu[1] == (byte)0xA4) && (apdu[2] == (byte)0x04)) {
             // SELECT APPLICATION
             return SW_NO_ERROR;
        } else if ((apdu[1] == (byte)0xCA) && (apdu[2] == (byte)0x02)) {
             // GET DATA (SIMPLE TLV)
             switch (apdu[3] & 0x0FF) {
                 case 0x001:
                     return new byte[]{ apdu[3], (byte)0x02, (byte)0x01, (byte)0x00, (byte)0x90, (byte)0x00 };
                 case 0x002:
                     return new byte[]{ apdu[3], (byte)0x02, (byte)0x12, (byte)0x34, (byte)0x90, (byte)0x00 };
                 case 0x003:
                     return new byte[]{ apdu[3], (byte)0x06, (byte)0xAA, (byte)0xBB, (byte)0xCC, (byte)0xDD, (byte)0xEE, (byte)0xFF, (byte)0x90, (byte)0x00 };
                 default:
                     return SW_INCORRECT_P1P2;
             }
        } else {
            return SW_INS_NOT_SUPPORTED;
        }
    }

    return SW_ERR_UNKNOWN;
}
您的HCE应用程序将理解以下命令APDUs:

  • 选择应用程序(通过辅助)

  • 获取数据对象的数据
    0201

    00 CA 02 01 00
    
  • 获取数据对象的数据
    0202

    00 CA 02 02 00
    
  • 获取数据对象的数据
    0203

    00 CA 02 03 00
    
其他命令将导致各种错误

00 CA 02 03 00