关于windows mobile 下用MAPIRule截获短信及tmail.exe的相关问题

 

在做短信截获软件时, 曾经遇到一个问题:

截获短信时,常用联系人和非常用联系人的短信到达后首先被系统的tmail.exe处理,但是tmail把这两者的号码(Address)解析成了不同的格式,

常用联系人:解析成 <姓名 + 号码>

非常用联系人:解析成 <号码>

因此,在截获时不能使用CatchNum == BlackNum 来判断,应该用 CatchNum是否包含BlackNum来判断。

其中,CatchNum是截获到的Address, BlackNum是黑名单中的号码.

解释一下: 什么是常用联系人和非常用联系人. 这个概念是针对保存在SIM卡上的电话号码来说的, 由于国际规范的规定,
SIM卡上保存的电话号码只有前254个号码是常用联系人, 也就是说可以在手机的通讯录上看到的, 这其实也就是为什么说我们的 K级SIM卡上只能保存254个号码, 其实根本原因不是SIM卡上保存不了, 而是保存了也索引不到,"手机看不见后面的"号码. 而我们的项目是采用大容量SIM卡, 在卡上保存上千条号码, 这样一来, 排在前面的254条就是常用联系人, 后面的就是非常用联系人了.

对于存在卡上的非常用联系人, 当有短信来时, 手机先去找手机本身的通讯录, 找不到再去找SIM卡的常用联系人, 再找不到的话就解析成<号码>, 也就时把号码用尖括号括起来, 这时, 我们用MAPIRule的方法取到的就是<号码>, 而不是<姓名 + 号码>.

也许这篇文章很少有人会用得到, 毕竟现在M级SIM卡还没大规模商用, 针对这个的编程很少有人做, 写在这就当给自己做个备忘把.

posted @ 2009-02-06 15:55  大厨无盐煮  阅读(1534)  评论(3编辑  收藏  举报