关于ril.lib库的问题

zxg1986516   2009-5-7 18:46 楼主
我想使用ril.lib库达到短信拦截的效果,但是在Notify函数被回调的时候,短信已经进入到了系统收件箱中,并且弹出了短信到达提示。请问有没有办法能在短信到达后删掉该信息,不让短信进入系统收件箱?(不使用MAPIRULE)谢谢

回复评论 (5)

不用MapiRule 应该不行吧,除非修改RIL层
点赞  2009-5-7 22:45
修改RIL层,在Msg.cpp文件中找到这个函数:

  1. static HRESULT ParseReadMsg(LPCSTR szRsp, void*& pBlob, UINT& cbBlob)

其中在函数里面的这段代码后面插一刀,筛选一下短信内容决定是否要把该短信放弃掉:

  1.     // Parse ""
  2.     fIncoming = (RIL_MSGSTATUS_RECUNREAD == prmi->dwStatus ||
  3.                  RIL_MSGSTATUS_RECREAD == prmi->dwStatus);
  4.     hr = ParseSMSMessage(szRsp, cbMessage, fIncoming, TRUE, prmi->rmMessage);
  5.     if (FAILED(hr))
  6.     {
  7.         goto Error;
  8.     }
  9.     szRsp += cbMessage;
  10.     prmi->dwParams |= RIL_PARAM_MI_MESSAGE;

其中prmi->rmMessage里保存的就是你短信的具体参数和内容,但是是PDU格式的,你还需要自己继续转换一下。
点赞  2009-5-8 09:20
To Roy_ly:
我是搞WM应用开发的,软件运行平台是市场上主流的WM系统手机,对底层不太熟悉。Ril.dll在设备上已经存在了而且不能修改也不能删除(因为该文件始终被占用),我无法让手机生产商修改他们系统,只能调用ril.dll中提供的导出函数来处理接收到的短信。现在我没有用LoadLibrary去直接加载手机上的ril.dll,而是#pragma comment了一个自己程序目录下的ril.lib文件,请问对这个ril.lib库中函数所做的修改是不是有效呢?
还有,我已经得到了CellCore的源程序,在里面的RIL目录里没有发现ril.lib中的导出函数,例如RIL_Initialize(),的实现和声明,请问Ril.lib这个库的源程序在哪里呢?
最后再问一下,ril层的代码可以单独编译吗?如果可以的话,可以发给我些参考资料吗?
谢谢
点赞  2009-5-8 13:27
ril的源代码放在:\PLATFORM\SMDK6410\SRC\DRIVERS\RIL目录下。
ril目录是可以单独编译的,只要进入编译环境(CE和MOBILE进入的方式不同,但编译的方式是一样的),然后进入RIL目录,直接BUILD -C就可以了。

要拦捷,我同意ultrapro的看法,用MapiRule应该可以。
点赞  2009-5-8 17:00
不知道楼主用mapi有啥问题?这么好用的MAPI居然不用要绕到下面去搞%
点赞  2009-5-11 14:05
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复