MTK短信模块解析:隐藏短信与发送机制

需积分: 15 20 下载量 116 浏览量 更新于2024-08-13 收藏 516KB PPT 举报
"根据短信的msg_id进行筛选-MTK 短信的发送机制" 本文将深入探讨MTK(MediaTek)平台上的短信发送机制,特别是如何根据msg_id筛选短信以及与之相关的模块和流程。首先,我们要理解的是,MTK SMS模块是手机硬件和软件之间通信的关键部分,它负责处理短信的接收、发送和存储。 1. **短信模块的目录结构** 在MTK平台上,短信模块通常位于`\plutommi\mmi`目录下,包括如`Messages`、`MiscFramework`、`UnifiedMessage`等子目录。具体的核心文件如`SMSMsg.c`、`SMSCore.c`、`SMSUtil.c`和`SMSBgHandle.c`等,它们包含了处理短信操作的函数和逻辑。 2. **短信模块的程序框架** 短信模块通过MMI(Man Machine Interface)与上层应用交互,通过L4(Layer 4)与底层硬件通信。例如,`mmi_frm_sms_read_sms_req()`用于请求读取短信,`mmi_frm_sms_write_action()`用于写入短信动作,而`mmi_frm_sms_unpack_sms()`则用于解析PDU编码的短信内容。 3. **短信在NV RAM中的储存方式** 短信存储在NVRAM(非易失性内存)中,如`\Code\MoDIS\WIN32FS\DRIVE_C\NVRAM\NVD_DATA\MP12_VERSION`下的特定区域。相关标识如`NVRAM_EF_SMSAL_SMS_LID`用于存储短信的逻辑ID,`NVRAM_EF_SMSAL_SMS_SIZE`表示每个短信条目的大小。 4. **PDU编码规则** PDU(Protocol Data Unit)编码是GSM网络中短信传输的标准格式,短信内容被转换成二进制数据进行传输。在解码PDU时,`mmi_frm_sms_unpack_sms()`会处理这些数据,将其还原为人类可读的文本格式。 5. **筛选短信的逻辑** 示例代码展示了如何在收件箱中筛选特定msg_id的短信。`GetActiveScreenId()`检查当前屏幕是否为收件箱,`data_list->data_list_table[item_index].msg_type`确认短信类型为普通短信。`mmi_sms_get_hidden_msg_id()`获取隐藏短信的msg_id数组,之后遍历数组,与目标msg_id进行比较,如果找到匹配项,则返回TRUE。 6. **短信的其他流程** 文档中还提到了删除短信、接收短信以及隐藏短信的原理,但并未详细展开。删除短信涉及从NVRAM中移除相关数据,收短信流程包括接收数据包、解析PDU并存储到NVRAM,隐藏短信可能涉及到修改msg_id列表使得短信不可见。 7. **问题和解决** 对于常见的bug及其解决过程,虽然文档没有详述,但在实际开发中,可能涉及的问题包括PDU解析错误、NVRAM存储空间不足、短信同步失败等,解决方法通常涉及调试代码、优化存储算法或更新硬件驱动。 MTK短信发送机制是一个复杂的过程,涉及多层交互和编码规则,理解和掌握这一机制对于手机系统的开发和维护至关重要。
2023-07-14 上传