美文网首页
高通平台ICCID乱码问题

高通平台ICCID乱码问题

作者: 平头说人生 | 来源:发表于2018-05-23 19:26 被阅读23次

高通平台ICCID乱码问题

Qcom平台Sim卡信息跟新流程如下:

1 路径一
QtiUiccCardProvisioner 注册 EVENT_UNSOL_MANUAL_PROVISION_STATUS_CHANGED 主动上报事件

--> handleUnsolManualProvisionEvent--> queryUiccProvisionInfo
(QtiRilInterface.getUiccIccId(phoneId) 通过QcRilHook,通过HIDL 直接获取IccId信息)
--> handleAddSubInfoRecordEvent
--> updateSubscriptionInfoByIccId
--> SubscriptionController.addSubInfoRecord

这个流程是没有对iccId做校验的,通过HIDL获取什么值就是什么值, 这个路径会产生乱码。

2 路径二

QtiUiccCardProvisioner 通过UiccController注册EVENT_ICC_CHANGED事件
-->queryUiccProvisionInfo
-->loadIccId
-->IccFileHandler.loadEFTransparent(IccConstants.EF_ICCID,
obtainMessage(EVENT_GET_ICCID_DONE)
-->IccUtils.bchToString
(进行校验,按照逻辑校验结果是0-9, a-f之间的所有字符)

SubscriptionController.java

/**
     * Add a new SubInfoRecord to subinfo database if needed
     * @param iccId the IccId of the SIM card
     * @param slotIndex the slot which the SIM is inserted
     * @return 0 if success, < 0 on error.
     */
    @Override
    public int addSubInfoRecord(String iccId, int slotIndex) {
        if (DBG) logdl("[addSubInfoRecord]+ iccId:" + SubscriptionInfo.givePrintableIccid(iccId) +
                " slotIndex:" + slotIndex);

        enforceModifyPhoneState("addSubInfoRecord");

        // Now that all security checks passes, perform the operation as ourselves.
        final long identity = Binder.clearCallingIdentity();
        try {
            if (iccId == null) {
                if (DBG) logdl("[addSubInfoRecord]- null iccId");
                return -1;
            }

            //Add begin by meitu.liuyt
            //MEITU_TAG_FORMAT_ICCID
            slogd("Before format rawIccId is " + iccId);
            //在将ICCID 写入db前先format下
            iccId = formatIccId(iccId); 
            slogd("After format rawIccId is " + iccId);
            ......
    }
    //Add begin by meitu.liuyt for ICCID's last character sometimes is garbled, like has '?' and so on
    //We're sure last character must be digit or a-f
    //So we format it as following
    //MEITU_TAG_FORMAT_ICCID
    private String formatIccId(String rawIccId) {
        if(TextUtils.isEmpty(rawIccId)) {
            slogd("Impossible, iccId is null");
            return rawIccId;
        }
        Pattern pattern = Pattern.compile("^0-9A-Fa-f");
        Matcher matcher = pattern.matcher(rawIccId);
        return matcher.replaceAll("").trim();
    }
    //Add end

相关文章

  • 高通平台ICCID乱码问题

    高通平台ICCID乱码问题 Qcom平台Sim卡信息跟新流程如下: 1 路径一QtiUiccCardProvisi...

  • 【Camera专题】Fatal signal 11 (SIGSE

    平台 高通 msm8909:安卓 7.0 问题: Fatal signal 11 (SIGSEGV), code ...

  • 【Camera专题】Qcom-Camera驱动框架浅析(Hal层

    1、前言 本文主要研究高通平台Camera驱动和HAL层代码架构,熟悉高通Camera的控制流程。平台:Qcom-...

  • 高通平台调试cpu

    -打印cpu、battery、gpu信息 catcpu.bat 打印当前是否省电模式root# dumpsys p...

  • 骁龙手机的opencl优化(一)

    opencl是针对在异构系统上进行跨平台程序并行的开源标准,而高通的骁龙平台上使用的高通Adreno GPU系列是...

  • Log收集工具开发

    公司的车载产品用的是高通平台的芯片和源码。高通平台的源码本身是没有收集log这个功能的。只能在终端通过adb去实时...

  • Day_04_Servlet

    request获得中文参数乱码问题 response返回中文乱码问题 跳转

  • 高通平台WLAN测试方法

    WLAN测试操作说明 一、WLAN开启步骤: 1、 开机后,如果屏幕锁住,向右侧拖动“锁”图标解锁,或者按左侧m...

  • 高通平台LOG目录分析

    高通平台日志目录分析 anr: android(system)日志中搜索“ANR in”关键字, 可以得到信息1、...

  • SpringMVC乱码-解决

    乱码问题乱码问题网上很多解决办法,但有粉丝想聊一聊,就在这里说一说,乱码分几种,1、界面乱码,如JSP显示中文乱码...

网友评论

      本文标题:高通平台ICCID乱码问题

      本文链接:https://www.haomeiwen.com/subject/kdrdjftx.html