You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Euicc Manager发送APDU时出现NO_SUCH_ELEMENT(错误码3)求助

问题

使用Euicc Manager发送APDU时出现状态码3,对应错误NO_SUCH_ELEMENT。

操作过程

选用ST33G1M2型号的eUICC芯片并插入手机,尝试移植Euicc Manager(com.google.android.euicc,已获取权限)到手机中,调试时触发该NO_SUCH_ELEMENT错误。

需求

不清楚如何调用底层或硬件,希望获取Android系统HAL/硬件相关的解决方案,或有相同错误经历的经验分享。

代码回溯疑问

我在AOSP代码中回溯了问题(相关代码片段如下),但未找到硬件相关内容,是否是异步调用到其他进程?

PhoneInterfaceManager.java代码片段

case CMD_OPEN_CHANNEL:
    request = (MainThreadRequest) msg.obj;
    uiccPort = getUiccPortFromRequest(request);
    IccLogicalChannelRequest openChannelRequest =
            (IccLogicalChannelRequest) request.argument;

    if (uiccPort == null) {
        loge("iccOpenLogicalChannel: No UICC");
        request.result = new IccOpenLogicalChannelResponse(-1,
                IccOpenLogicalChannelResponse.STATUS_MISSING_RESOURCE, null);
        notifyRequester(request);
    } else {
        onCompleted = obtainMessage(EVENT_OPEN_CHANNEL_DONE, request);
        uiccPort.iccOpenLogicalChannel(openChannelRequest.aid,
                openChannelRequest.p2, onCompleted);
    }
    break;

case EVENT_OPEN_CHANNEL_DONE:
    ar = (AsyncResult) msg.obj;
    request = (MainThreadRequest) ar.userObj;
    IccOpenLogicalChannelResponse openChannelResp;

    if (ar.exception == null && ar.result != null) {
        int[] result = (int[]) ar.result;
        int channelId = result[0];
        byte[] selectResponse = null;

        if (result.length > 1) {
            selectResponse = new byte[result.length - 1];
            for (int i = 1; i < result.length; ++i) {
                selectResponse[i - 1] = (byte) result[i];
            }
        }

        openChannelResp = new IccOpenLogicalChannelResponse(channelId,
                IccOpenLogicalChannelResponse.STATUS_NO_ERROR, selectResponse);
        uiccPort = getUiccPortFromRequest(request);

        if (uiccPort == null) {
            loge("EVENT_OPEN_CHANNEL_DONE: UiccPort is null");
        } else {
            IccLogicalChannelRequest channelRequest =
                    (IccLogicalChannelRequest) request.argument;
            channelRequest.channel = channelId;
            uiccPort.onLogicalChannelOpened(channelRequest);
        }
    } else {
        if (ar.result == null) {
            loge("iccOpenLogicalChannel: Empty response");
        }
        if (ar.exception != null) {
            loge("iccOpenLogicalChannel: Exception: " + ar.exception);
        }

        int errorCode = IccOpenLogicalChannelResponse.STATUS_UNKNOWN_ERROR;
        if (ar.exception instanceof CommandException) {
            CommandException.Error error =
                    ((CommandException) (ar.exception)).getCommandError();
            if (error == CommandException.Error.MISSING_RESOURCE) {
                errorCode = IccOpenLogicalChannelResponse.STATUS_MISSING_RESOURCE;
            } else if (error == CommandException.Error.NO_SUCH_ELEMENT) {
                errorCode = IccOpenLogicalChannelResponse.STATUS_NO_SUCH_ELEMENT;
            }
        }

        openChannelResp = new IccOpenLogicalChannelResponse(
                IccOpenLogicalChannelResponse.INVALID_CHANNEL, errorCode, null);
    }

    request.result = openChannelResp;
    notifyRequester(request);
    break;

错误日志

2023-10-14 13:22:14.534  3860-3860  EuiccCardController     com.android.phone                    E  getEuiccChallenge callback onException: 

                                                                                                com.android.internal.telephony.uicc.euicc.EuiccCardException: Cannot send APDU.

                                                                                                    at com.android.internal.telephony.uicc.euicc.EuiccPort.lambda$sendApdu$50(EuiccPort.java:1159)

                                                                                                    at com.android.internal.telephony.uicc.euicc.EuiccPort.$r8$lambda$8x9Mw_LfktrBXDaDFYF0Xl8vpps(Unknown Source:0)

                                                                                                    at com.android.internal.telephony.uicc.euicc.EuiccPort$$ExternalSyntheticLambda52.handleException(Unknown Source:2)

                                                                                                    at com.android.internal.telephony.uicc.euicc.EuiccPort$1.onException(EuiccPort.java:1224)

                                                                                                    at com.android.internal.telephony.uicc.euicc.apdu.ApduSender$1.onResult(ApduSender.java:138)

                                                                                                    at com.android.internal.telephony.uicc.euicc.apdu.ApduSender$1.onResult(ApduSender.java:127)

                                                                                                    at com.android.internal.telephony.uicc.euicc.async.AsyncMessageInvocation.handleMessage(AsyncMessageInvocation.java:57)

                                                                                                    at android.os.Handler.dispatchMessage(Handler.java:107)

                                                                                                    at android.os.Looper.loopOnce(Looper.java:238)

                                                                                                    at android.os.Looper.loop(Looper.java:357)

                                                                                                    at android.app.ActivityThread.main(ActivityThread.java:8088)

                                                                                                    at java.lang.reflect.Method.invoke(Native Method)

                                                                                                    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)

                                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957)

                                                                                                Caused by: com.android.internal.telephony.uicc.euicc.apdu.ApduException: Failed to open logical channel opened for AID: A0000005591010FFFFFFFF8900000100, with status: 3 (apduStatus=0)

                                                                                                    at com.android.internal.telephony.uicc.euicc.apdu.ApduSender$1.onResult(ApduSender.java:138) 

                                                                                                    at com.android.internal.telephony.uicc.euicc.apdu.ApduSender$1.onResult(ApduSender.java:127) 

                                                                                                    at com.android.internal.telephony.uicc.euicc.async.AsyncMessageInvocation.handleMessage(AsyncMessageInvocation.java:57) 

                                                                                                    at android.os.Handler.dispatchMessage(Handler.java:107) 

                                                                                                    at android.os.Looper.loopOnce(Looper.java:238) 

                                                                                                    at android.os.Looper.loop(Looper.java:357) 

                                                                                                    at android.app.ActivityThread.main(ActivityThread.java:8088) 

                                                                                                    at java.lang.reflect.Method.invoke(Native Method) 

                                                                                                    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 

                                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957) 

2023-10-14 13:22:18.904  3860-3860  EuiccCardController     com.android.phone                    E  getEuiccChallenge callback onException: 

                                                                                                com.android.internal.telephony.uicc.euicc.EuiccCardException: Cannot send APDU.

                                                                                                    at com.android.internal.telephony.uicc.euicc.EuiccPort.lambda$sendApdu$50(EuiccPort.java:1159)

                                                                                                    at com.android.internal.telephony.uicc.euicc.EuiccPort.$r8$lambda$8x9Mw_LfktrBXDaDFYF0Xl8vpps(Unknown Source:0)

                                                                                                    at com.android.internal.telephony.uicc.euicc.EuiccPort$$ExternalSyntheticLambda52.handleException(Unknown Source:2)

                                                                                                    at com.android.internal.telephony.uicc.euicc.EuiccPort$1.onException(EuiccPort.java:1224)

                                                                                                    at com.android.internal.telephony.uicc.euicc.apdu.ApduSender$1.onResult(ApduSender.java:138)

                                                                                                    at com.android.internal.telephony.uicc.euicc.apdu.ApduSender$1.onResult(ApduSender.java:127)

                                                                                                    at com.android.internal.telephony.uicc.euicc.async.AsyncMessageInvocation.handleMessage(AsyncMessageInvocation.java:57)

                                                                                                    at android.os.Handler.dispatchMessage(Handler.java:107)

                                                                                                    at android.os.Looper.loopOnce(Looper.java:238)

                                                                                                    at android.os.Looper.loop(Looper.java:357)

                                                                                                    at android.app.ActivityThread.main(ActivityThread.java:8088)

                                                                                                    at java.lang.reflect.Method.invoke(Native Method)

                                                                                                    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)

                                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957)

                                                                                                Caused by: com.android.internal.telephony.uicc.euicc.apdu.ApduException: Failed to open logical channel opened for AID: A0000005591010FFFFFFFF8900000100, with status: 3 (apduStatus=0)

                                                                                                    at com.android.internal.telephony.uicc.euicc.apdu.ApduSender$1.onResult(ApduSender.java:138) 

                                                                                                    at com.android.internal.telephony.uicc.euicc.apdu.ApduSender$1.onResult(ApduSender.java:127) 

                                                                                                    at com.android.internal.telephony.uicc.euicc.async.AsyncMessageInvocation.handleMessage(AsyncMessageInvocation.java:57) 

                                                                                                    at android.os.Handler.dispatchMessage(Handler.java:107) 

                                                                                                    at android.os.Looper.loopOnce(Looper.java:238) 

                                                                                                    at android.os.Looper.loop(Looper.java:357) 

                                                                                                    at android.app.ActivityThread.main(ActivityThread.java:8088) 

                                                                                                    at java.lang.reflect.Method.invoke(Native Method) 

                                                                                                    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 

                                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957) 

内容的提问来源于stack exchange,提问作者markP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:59:53