Symbian中创建和发送MMS

Ø         重要的概念术语

MTMMessage Type Module,是一组的用来处理不同类型消息的模块

Entry:数据项,描述消息分层结构中每一个结点属性的数据结构

Session:会话,是symbianclient/server通讯的基础,在客户端提供接口,服务器提供接口的实现

 

Ø         symbian的消息组织结构

手机中的各种消息都是以数据项(Entry)形式供程序操作,数据项有4种类型, Symbian

OS为每种数据项提供了相应的常量标识UID,这些UID保存在msvuids.h文件中

 

Ø   文件夹类型, 对应常量UIDKUidMsvFolderEntry,和PC上的文件系统一样,每个文

件夹可以包含其它数据项也可能是其它数据项的子数据项。

Ø   消息类型,对应常量UIDKUidMsvMessageEntry,它表示该数据项是一条消息。

Ø   附件类型,对应常量UIDKUidMsvAttachmentEntry,它表示该数据项是某条信息的

附件。

Ø   服务类型,对应常量UIDKUidMsvServiceEntry,服务数据项包含某个消息服务的配置信息,在一般情况还拥有通过该服务收发的消息数据项。

 

除了上面提到的四种类型UID还有常用到的UIDKUidMsvRootEntrymsvids.h),它指的是根数据项,根数据项包含了4个标准文件夹数据项,分别是收件箱(KMsvGlobalInBoxIndexEntryId)、发件箱(KMsvGlobalOutBoxIndexEntryId)、草稿箱(KMsvDraftEntryId)和已发送项(KMsvSentEntryId),另外根数据项下面还包含有各种消息服务的服务项。(具体参考http://blog.csdn.net/beover1984)

 

Ø         创建MMS和发送MMS

(1)    创建MMS

// switch to draft box

    iMmsMtm->SwitchCurrentEntryL(KMsvDraftEntryId);

     // create a new mms with default settings

   iMmsMtm->CreateMessageL(iMmsMtm->DefaultSettingsL());

    CMsvEntry& serverEntry = iMmsMtm->Entry();

    TMsvEntry entry(serverEntry.Entry());

    entry.SetInPreparation(EFalse);

    entry.SetVisible(ETrue);

    entry.SetSendingState(KMsvSendStateWaiting);

    entry.iDate.HomeTime();

    serverEntry.ChangeL(entry);

(2)    添加附件

     // check if the mobile support attachments

    if(iAttachFileName != NULL &&

            iMmsMtm->QueryCapability(KUidMtmQuerySupportAttachments, queryResponse) == KErrNone)

    {

        TMsvId attID = KMsvNullIndexEntryId;

        iMmsMtm->CreateAttachment 2L (attID, *iAttachFileName);

        iMmsMtm->SetMessageRootL(attID);

        iMmsMtm->SaveMessageL();

}

// add text body

    RFileWriteStream  txtFile;

txtFile.Replace(CCoeEnv::Static()->FsSession(), _L("c://warning.txt"), EFileWrite|EFileShareAny);

    txtFile.WriteL(iMessageText);

    txtFile.Close();

     TMsvId attID = KMsvNullIndexEntryId;

    iMmsMtm->CreateAttachment 2L (attID, _L("c://warning.txt"));

    iMmsMtm->SetMessageRootL(attID);

    iMmsMtm->SaveMessageL();

(3)    发送MMS

    // sync send mms

    CMsvOperationWait * wait = CMsvOperationWait::NewLC();

    wait->iStatus = KRequestPending;

    CMsvOperation* op = NULL;

    op = iMmsMtm->SendL(wait->iStatus);

    wait->Start();

    CleanupStack::PushL(op);

    CActiveScheduler::Start();

    while (wait->iStatus.Int() == KRequestPending)

    {

        CActiveScheduler::Start();

    }

    CleanupStack::PopAndDestroy(2);

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值