同步Windows Mobile SIM卡短信
来源:互联网 发布:手拉鸡专卖网淘宝付款 编辑:程序博客网 时间:2024/04/30 10:15
同步Windows Mobile SIM卡短信
作者:金海建
背景:Windows Mobile默认情况下,SIM卡中的短信会同步到系统的短信数据库中。这个工作是由cprog.exe(电话程序)来完成,当插卡开机,注册到网络后(或者手机使用中由飞行模式进入待机模式),cprog.exe会删除数据库中带有SIM短信标志的记录,然后从SIM卡导入新的内容。由于项目需要,我们不让cprog.exe运行,那么完成短信导入的工作,只能交给自己的程序来处理。
涉及内容:SIM API、CEMAPI、CEDB
难点分析:我们在短信界面操作SIM卡短信的时候,可以直接对SIM短信进行删除、复制的动作。就删除动作而言,其实进行了两个操作:首先是从短信数据库中读取其在SIM卡上存储的索引,然后调用SimDeleteMessage删除SIM短信。删除完SIM卡短信,等返回成功后,然后删除数据库中的内容。所以一条SIM卡短信要同时删除数据中的记录还要删除SIM卡上的记录。那么问题来了,系统是如何知道是一条SIM卡短信的,又是如何知道其在SIM卡上的索引呢。我们在复制短信的时候,调用SimReadMessage,如果能够读取到短信,我们就知道了它在SIM卡上的索引。我们需要把整个索引号存入短信数据库。在Windows Mobile中,我们可以用CEMAPI来对短信进行操作。用IMessage把每条SIM卡短信的记录内容都打印出来,然后进行仔细的对比分析,最终找出如下区别:
SIM短信标志:字段PR_MESSAGE_CLASS,该字段可以在mapitags.h中找到。用“IPM.SMStext”表示普通短信,用”IPM.SMStext.SIM”标志SIM卡短信。
SIM卡短信索引:字段PR_SMSSTORAGE_ID,该字段微软没有定义,是自己通过比较找出来的。用下面这个宏来定义
#define PR_SMSSTORAGE_ID PROP_TAG( PT_LONG, 0x825C)
实现:通过上面的分析,用代码实现起来就很容易了,无法就是调用SIM API和CEMAPI。Code如下(代码不全,只是贴了重要的部分)
下一篇会讲解如何同步SIM卡联系人。
- 同步Windows Mobile SIM卡短信
- 同步Windows Mobile SIM卡联系人
- Windows Mobile读取SIM卡联系人
- Windows Mobile 获取SIM卡联系人信息
- SIM Programming On Windows Mobile
- Windows mobile 下读取手机SIM卡信息(ZT)
- Windows mobile 下读取手机SIM卡信息
- Windows mobile 下读取手机SIM卡信息
- Windows mobile 下读取手机SIM卡信息
- Windows mobile 下读取手机SIM卡信息
- Windows mobile 下读取手机SIM卡信息(IMEI类)
- Windows mobile 下读取手机SIM卡信息
- Windows Mobile读取SIM卡联系人(不通过OpenNETCF)
- Windows mobile 下读取手机SIM卡信息
- Windows Mobile获取SIM卡上的所有电话号码
- Windows mobile 从SIM卡获得手机本机号码
- Windows mobile 下读取手机SIM卡信息
- windows mobile检查SIM卡是否存在的方法
- silverlight百叶窗
- mutable学习
- C#网络编程(同步传输字符串) - Part.2
- 自卑的程序员和愚蠢的管理者
- 第三方设备
- 同步Windows Mobile SIM卡短信
- C与C++社区混战,C#会重蹈覆辙吗?
- 开源界的5大开源许可协议
- C#会重蹈覆辙吗?系列之1:论C#性能不能承受之慢
- CentOS编译新内核时遇到的问题
- [转]Flex 项目不能运行jsp文件 java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor
- 成大事必备9种能力、9种手段、9种心态
- VS2005 在编译C++时候遇到的错误和警告
- SQL 7.9 游标,row_number() ,update的另一种写法