将数据写入的Nexus 4在卡仿真模式ACR122 [英] Writing data into Nexus 4 in card emulation mode with ACR122

查看:197
本文介绍了将数据写入的Nexus 4在卡仿真模式ACR122的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过NFC一些数据发送到的Nexus 4(即卡模拟模式)。我尝试了一些的APDU命令,如书写和更新的APDU,但我不能让他们的工作。

I am trying to send some data to the Nexus 4 through NFC (i.e. the card emulation mode). I tried a number of the command APDUs such as writing and updating APDUs, but I couldn't get them to work.

我所想说的是,我要选择APDU命令后,发送一些数据(也就是不AID)到手机上。

What I am trying to say is, I want to send some data (that is not the AID) to the phone after the select APDU command.

在此先感谢,

贝德

推荐答案

的HCE模拟卡将确切地理解这些命令,你HCE应用程序的APDU服务流程。所以,举例来说,如果你的HCE服务的 processCommandApdu()回调方法是这样的:

The HCE emulated card will understand exactly those commands that your HCE app's APDU service processes. So, for instance, if your HCE service's processCommandApdu() callback method looks like this:

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应用程序将了解以下APDU命令:

Your HCE app would understand the following command APDUs:

  • 选择应用程序(由AID)

  • SELECT APPLICATION (by AID)

00 A4 04 xx ...

  • GET DATA的数据对象 0201

    00 CA 02 01 00
    

  • GET DATA的数据对象 0202

    00 CA 02 02 00
    

  • GET DATA的数据对象 0203

    00 CA 02 03 00
    

  • 其他命令将导致各种错误。

    Other commands will result in various errors.

    这篇关于将数据写入的Nexus 4在卡仿真模式ACR122的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆