symbian SMS应用

首先来介绍下与SMS相关的类吧。

CMsvSession
该类代表客户端(客户端MTM、用户接口MTM或者客户端消息应用程序)与消息服务器端的通讯通道。每一个客户端线程对应一个该类的实例,CMsvSession提供客户端能及时获取消息服务端消息的有效方式。一个消息客户端应用必须在正常使用任何MTM或CMsvEntry对象前,使用OpenSyncL()或者OpenASyncL()来新建一个session对象。

CClientMtmRegistry
Registry掌握了客户端所有目前可用的MTM有关的细节,消息客户端可以使用该类获得从CBaseMtm继承的对象。

CBaseMtm
这个类主要用来操作sms的内容,比如可以新建、修改sms;具体是使用方法下面将会借助代码说明,更详细的内容你也可以查看具体sdk的help。
CMsvEntry
相当于一个特定消息服务器的入口,当前entry与其的具体内容相关联。CMsvEntry包含两个部分的功能:一是可以允许访问与这个entry关联的,不同类型的数据;而是运行访问它的子entry。该类只在客户端使用,服务器端使用CMsvServerEntry。
TMsvEntry
用于代表消息服务器的一个入口,主要用于sms的新建。

 

接着就让我们来上代码分析吧。


TMsvSelectionOrdering sort;
sort.SetShowInvisibleEntries(ETrue); //全部内容排序,包括隐藏
//设置入口为outbox,也就是发信箱
CMsvEntry* entry = CMsvEntry::NewL(*iSession,KMsvGlobalOutBoxIndexEntryId,sort);
CleanupStack::PushL(entry);
//选择全部内容
CMsvEntrySelection* entries = entry->ChildrenL();
CleanupStack::PushL(entries); 

TTime time;
//得到首信息的时间,At(0)代表首信息,取其他的可以给出相应的index
time = entry->ChildDataL(entries->At(0)).iDate;
//弹出对话框,有首信息接收人的号码信息
CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
informationNote->ExecuteLD(entry->ChildDataL(entries->At(0)).iDetails); 

CleanupStack::PopAndDestroy(2);
其中  CMsvSession*  iSession

一般用到他要先连接会话 iSession = CMsvSession::OpenAsyncL(*this);还要继承MMsvSessionObserver类

简单说一下上面程序的意思:首先定义一个消息服务器的入口,关联着outbox;然后取出outbox中所有的短信内容,并存储到CMsvEntrySelection型指针指向的list中,操作list便可方便的操作outbox中的sms。

 

几个常用的TMsvId  KMsvGlobalOutBoxIndexEntryId(发件箱)KMsvGlobalInBoxIndexEntryId(收件箱) KMsvDraftEntryId(草稿箱) KMsvSentEntryId(已发送的文件夹)

 

如果需要删除短信 调用 DeleteL方法就行。

 

有了上面的了解,不难看出sms的操作其实和我们上一讲所说的vCard有类似之处,下面我们来看看如何将sms的内容导出到文件。这里会用到类CBaseMtm

iSmsMtm->SwitchCurrentEntryL(aEntryId); 
iSmsMtm->LoadMessageL(); // load the message 

CRichText& body = iSmsMtm->Body(); //sms的内容存到CRichText控件对象中
TPtrC msg(body.Read(0)); 
WriteToFileL(msg); 

 

iSmsMtm是CBaseMtm类型的指针变量,它当然需要初始化,如下方式:
1.iSession = CMsvSession::OpenAsyncL(*this);
// 该函数的参数应该是从MMsvSessionObserver继承过来的任何类.....它会和 session library 间建立一个异步连接... 
//然后你可以在函数HandleSessionEventL中收到事件EMsvServerReady... 
//事件到达表明同服务器间的通话已建立... 接着去得到 Mtm Registry,并返回 SMS mtm...
 
2.iMtmReg = CClientMtmRegistry::NewL(*iSession);
3.iMtmSms = static_cast<CSmsClientMtm *> (iMtmReg->NewMtmL(KUidMsgTypeSMS));

至于写文件操作WriteToFiles()

自个写吧,应该很简单的吧。

 

那今天就到这里了。。。明天接着来。

 

忘了说sms几个经常用的参数了。。。

TTime iDate (类型和名称)         Time (描述)短信时间
TPtrC iDescription               Description 短信内容
TPtrC iDetails                   Details 发送或接受人号码
TInt32 iSize                     Size 短信大小

 

补充wiki论坛上的经典例子来了

http://wiki.forum.nokia.com/index.php/%E7%9F%AD%E4%BF%A1%E6%93%8D%E4%BD%9C

 

值得学习。看了不要忘记顶贴啊。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值