TelephonyManager.iccTransmitApduBasicChannel的data参数格式咨询
关于
iccTransmitApduBasicChannel中data参数的格式说明 嘿,刚好我之前做过SIM卡APDU交互的相关开发,来给你明确一下这个参数的格式:
data参数的类型是String,但它是十六进制字符串格式**,用来表示APDU命令中的数据段(也就是Command Data字段)。- 它不是整数类型,也不是普通文本字符串:每两个十六进制字符对应一个字节的二进制数据,比如你要发送二进制字节
0x1A 0x2B,就需要把data设为"1A2B"。
几个关键注意点:
- 字符串长度必须是偶数,因为每个字节对应两个十六进制字符,如果是奇数长度,API大概率会抛出异常或者处理失败。
p3参数的值要和data的实际字节数一致:比如data是"010203"(对应3个字节),那p3就得设为3。- 如果你的APDU命令没有数据段(比如某些查询类命令),可以把
data设为空字符串"",同时p3设为0。
举个实际调用的例子:
// 发送一个包含数据段的APDU命令,数据为0x01 0x02 String response = telephonyManager.iccTransmitApduBasicChannel(0x00, 0xA4, 0x04, 0x00, 2, "0102");
返回的response同样是十六进制字符串,对应SIM卡返回的响应数据(包括SW状态字)。
内容的提问来源于stack exchange,提问作者shrish123 kumar
相关产品推荐
相关产品推荐

