JavaCard SIMToolkit开发:如何通过超长AID选择UICC文件/应用?
用长AID选择UICC文件/应用的解决方案
在SIM Toolkit开发场景中,你提到的sim.select(short)或预定义常量的调用方式仅适用于短文件ID(FID,比如0x3F00这类2字节值),无法处理长度超过10字节的AID。要实现长AID的文件/应用选择,你需要使用sim.access.SIMView类中支持字节数组参数的重载select方法,具体操作如下:
1. 把目标AID转为字节数组
先将AID的十六进制字符串拆分为单个字节,比如你的AID是A000000003869807010203(12字节),转换为Java字节数组:byte[] targetAid = new byte[]{ (byte)0xA0, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x03, (byte)0x86, (byte)0x98, (byte)0x07, (byte)0x01, (byte)0x02, (byte)0x03 };2. 调用字节数组参数的select方法
直接传入这个字节数组即可完成长AID的选择,记得捕获可能的异常:try { // 传入AID字节数组进行选择 sim.select(targetAid); // 选择成功后,可执行读取文件、执行命令等后续操作 } catch (SIMException e) { // 处理选择失败的情况,比如AID不存在、权限受限等 // 可根据异常码做针对性处理 }重要提示
- 这个重载方法支持符合ISO 7816标准的AID,最长可处理16字节的AID
- 操作前需确保你的STK小程序拥有目标文件/应用的访问权限,否则会抛出权限相关的
SIMException - 如果需要选择某个DF下的子文件,可以先通过FID或AID选中父DF,再执行子文件的选择操作
内容的提问来源于stack exchange,提问作者VSB
相关产品推荐
相关产品推荐

