Android 系统(224)---如何不显示开机SIM卡欢迎语

如何不显示开机SIM卡欢迎语

 

在 Feature Phone 上,如果插 SIM 卡开机,有些 SIM 卡有提示信息,例如:“欢迎使用中国移动服务!”, 类似这样的提示信息是 SIM 卡上报的 display text, 手机是按照协议要求做显示。

 

display text 可分两类:

第一类:仅仅显示提示信息,不需要 user 确认;

第二类:必须要 User 输入或确认;

 

针对“第一类”不需要user确认的 display text 提示信息,在一些特殊项目上,如果不希望显示出来,请参考下面修改。

 

解决方法:

因为 display text 是 SIM 卡上报的 SAT 命令,一定要回对应的 terminal response 给 SIM 卡,否则 SIM 卡就不能正常执行其他的 SAT 命令,可能出现的问题有:不能打电话。所以,如果不希望显示 display text, 请参考下面修改两点。

为了安全,请不要使用原有的 timer id, 也就是不要使用 SAT_TIMER_CLEAR_DELAY, 请自定义一个 timer ID,  然后仅在这里使用自定义的 timer ID.

  

修改后的代码:

 1. 添加函数:

void srv_sat_hide_display_text_timeout(void)

{

    srv_sat_terminal_response_display_text(

        sim_id,

        SRV_SAT_TERMINAL_RES_CMD_PERFORMED_SUCCESSFULLY,

        SRV_SAT_ADDITIONAL_RES_NO_SPECIFIC_CAUSE);

 }

2. 修改函数:

注意代码中 #if 1 ......#endif

如果有问题,请提供log, filter: MOD_L4C, MOD_COMMON_APP(group_3),MOD_SIM(all class on),MOD_FW.

MMI_BOOL srv_sat_do_display_text(

            srv_sat_enum sat_id,

            srv_sat_cntx_struct *context,

            srv_sat_display_text_struct *display_text,

            void *info)

{

    /*----------------------------------------------------------------*/

    /* Local Variables                                                */

    /*----------------------------------------------------------------*/

    mmi_sat_display_text_ind_struct *sim_ind;

    mmi_sim_enum sim_id = SATID_2_SIMID(sat_id);

 

    /*----------------------------------------------------------------*/

    /* Code Body                                                      */

    /*----------------------------------------------------------------*/

    sim_ind = (mmi_sat_display_text_ind_struct*) info;

 

    memset(display_text, 0, sizeof(srv_sat_display_text_struct));

    memcpy(display_text->cmd_detail, sim_ind->cmd_detail, 5 * sizeof(U8));

 

    if (context->cmd_type == SRV_SAT_CMD_SEND_SS_RETURN_RESULT ||

        context->cmd_type == SRV_SAT_CMD_SEND_USSD_RETURN_RESULT)

    {

        srv_sat_terminal_response_display_text(

            sim_id,

            SRV_SAT_TERMINAL_RES_CMD_PERFORMED_SUCCESSFULLY,

            SRV_SAT_ADDITIONAL_RES_NO_SPECIFIC_CAUSE);

        return MMI_FALSE;

    }

 

    if (!srv_sat_do_check(sat_id, SRV_SAT_CHECK_DM_SETTING_EX))

    {

        srv_sat_terminal_response_display_text(

            sim_id,

            SRV_SAT_TERMINAL_RES_ME_CURRENTLY_UNABLE_TO_PROCESS_CMD,

            SRV_SAT_ADDITIONAL_RES_NO_SPECIFIC_CAUSE);

        return MMI_FALSE;

    }

 

    /* If the ME receives an icon and either an empty, or no, alpha identifier/text string is given by

       the SIM, than the ME shall reject the command with general result "Command data not understood by ME". */

    if (sim_ind->is_icon_available && !sim_ind->no_text_string)

    {

        srv_sat_terminal_response_display_text(

            sim_id,

            SRV_SAT_TERMINAL_RES_CMD_DATA_NOT_UNDERSTAND_BY_ME,

            SRV_SAT_ADDITIONAL_RES_NO_SPECIFIC_CAUSE);

        return MMI_FALSE;

    }

 

    /* for hide display text, which type no need user confirm. */

    #if 1 

 

    kal_sys_trace("[text] 0 ");

    if (sim_ind->clear_text_type == SRV_SAT_CLEAR_AFTER_SHORT_DELAY)

    {

        kal_sys_trace("[text] 1 ");

        if(sim_ind->immediate_res == MMI_TRUE)

        {

             kal_sys_trace("[text] 2 ");

            srv_sat_terminal_response_display_text(

                sim_id,

                SRV_SAT_TERMINAL_RES_CMD_PERFORMED_SUCCESSFULLY,

                SRV_SAT_ADDITIONAL_RES_NO_SPECIFIC_CAUSE);

            return MMI_FALSE;

        }

        else 

        {

             kal_sys_trace("[text] 3 ");

            StartTimer(SAT_TIMER_CLEAR_DELAY, MMI_SAT_DISPLAY_TEXT_DELAY_DURATION*1000, srv_sat_hide_display_text_timeout);
            /*if use gui_start_timer, no need to define timer id.*/ 
            //gui_start_timer(MMI_SAT_DISPLAY_TEXT_DELAY_DURATION*1000, srv_sat_hide_display_text_timeout);
        
            return MMI_FALSE;

        }

    }

 

    kal_sys_trace("[text] 4 ");

    #endif //

 

    display_text->priority = (srv_sat_priority_enum) sim_ind->priority;

    display_text->clear_type = (srv_sat_clear_enum) sim_ind->clear_text_type;

    display_text->immediate_res = (MMI_BOOL) sim_ind->immediate_res;

 

    display_text->text_string =

        DO_TEXT(sim_ind->text_string, sim_ind->no_text_string, sim_ind->dcs_of_text_string);

 

    ADD_TO_ICON(

        (MMI_BOOL) sim_ind->is_icon_available, sim_ind->icon_info.icon_id,

        (srv_sat_icon_enum) sim_ind->icon_info.icon_attr, &display_text->icon);

 

    return MMI_TRUE;

}

 修改前的代码: 

 MMI_BOOL srv_sat_do_display_text(

            srv_sat_enum sat_id,

            srv_sat_cntx_struct *context,

           // srv_sat_display_text_struct *display_text,

            void *info)

{

    /*----------------------------------------------------------------*/

    /* Local Variables                                                */

    /*----------------------------------------------------------------*/

    mmi_sat_display_text_ind_struct *sim_ind;

    mmi_sim_enum sim_id = SATID_2_SIMID(sat_id);

      srv_sat_display_text_struct *display_text = &g_srv_sat_proactive_sim[sat_id].cmd_data.display_text;

            
    /*----------------------------------------------------------------*/

    /* Code Body                                                      */

    /*----------------------------------------------------------------*/

    sim_ind = (mmi_sat_display_text_ind_struct*) info;

 

    memset(display_text, 0, sizeof(srv_sat_display_text_struct));

    memcpy(display_text->cmd_detail, sim_ind->cmd_detail, 5 * sizeof(U8));

 

    if (context->cmd_type == SRV_SAT_CMD_SEND_SS_RETURN_RESULT ||

        context->cmd_type == SRV_SAT_CMD_SEND_USSD_RETURN_RESULT)

    {

        srv_sat_terminal_response_display_text(

            sim_id,

            SRV_SAT_TERMINAL_RES_CMD_PERFORMED_SUCCESSFULLY,

            SRV_SAT_ADDITIONAL_RES_NO_SPECIFIC_CAUSE);

        return MMI_FALSE;

    }

 

    if (!srv_sat_do_check(sim_id, SRV_SAT_CHECK_DM_SETTING_EX))

    {

        srv_sat_terminal_response_display_text(

            sim_id,

            SRV_SAT_TERMINAL_RES_ME_CURRENTLY_UNABLE_TO_PROCESS_CMD,

            SRV_SAT_ADDITIONAL_RES_NO_SPECIFIC_CAUSE);

        return MMI_FALSE;

    }

 

    /* If the ME receives an icon and either an empty, or no, alpha identifier/text string is given by

       the SIM, than the ME shall reject the command with general result "Command data not understood by ME". */

    if (sim_ind->is_icon_available && !sim_ind->no_text_string)

    {

        srv_sat_terminal_response_display_text(

            sim_id,

            SRV_SAT_TERMINAL_RES_CMD_DATA_NOT_UNDERSTAND_BY_ME,

            SRV_SAT_ADDITIONAL_RES_NO_SPECIFIC_CAUSE);

        return MMI_FALSE;

    }

 

    display_text->priority = (srv_sat_priority_enum) sim_ind->priority;

    display_text->clear_type = (srv_sat_clear_enum) sim_ind->clear_text_type;

    display_text->immediate_res = (MMI_BOOL) sim_ind->immediate_res;

 

    display_text->text_string =

        DO_TEXT(sim_ind->text_string, sim_ind->no_text_string, sim_ind->dcs_of_text_string);

 

    ADD_TO_ICON(

        (MMI_BOOL) sim_ind->is_icon_available, sim_ind->icon_info.icon_id,

        (srv_sat_icon_enum) sim_ind->icon_info.icon_attr, &display_text->icon);

 

    return MMI_TRUE;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值