因为一个项目要根据短信的内容来控制手机进行不同的工作,所以就要解析短信的内容,之后不把短信存到手机里面。
首先找到手机mmi收到短信的入口
SetProtocolEventHandler(mmi_frm_sms_new_sms_ind, PRT_MSG_ID_MMI_SMS_DELIVER_MSG_IND);
在mmi_frm_sms_new_sms_ind 里面
只需要关注 mmi_frm_sms_new_sms();
之后是 mmi_frm_sms_indicate_sms(index);
在mmi_frm_sms_indicate_sms(index);里面的
memset(content, 0x00, content_len);
withobject = mmi_frm_sms_get_awaited_sms((U8) index, data, content);
data->msg_data[0] = (U8) index;
下面加入下面的代码
#if 1
if(!mmi_msgfirewall_get_patternIn_status()) //号码在黑名单里面
{
strcpy((S8*)comparenum, (S8*)(data->addr_number.number));
Get_Phone_Number(comparenum);
wrong_code = Unpack_sms_data((S8*)content , (S8*)Phone_Number); // 这个就是解析函数
//content 里面就是短信息的内容 Phone_Number是Get_Phone_Number里面得到的发送方的电话号码
}
#endif
在mmi_msg_new_msg_ind 里面
if(1) //(mmi_msgfirewall_get_patternIn_status()) //不把短信发到收件箱,直接删除
{
kal_prompt_trace(MOD_MMI, "###mmi_msg_new_msg_ind: delete sms");
//michael
mmi_delete_sms_for_firewall(NULL, MOD_MMI, MMI_FRM_SMS_APP_INBOX, index);
// mmi_frm_sms_delete_sms(NULL, MOD_MMI, MMI_FRM_SMS_APP_INBOX, index);
mmi_msgfirewall_set_patternIn_status(0);
return;
}
这样就可以不把短信存到收件箱里面了。
对于收到就打开的短信
mmi_frm_sms_reg_interrupt_check(MOD_MMI, PRT_MSG_ID_MMI_SMS_STATUS_REPORT_IND, mmi_msg_handle_deli