关闭

Symbian中创建和发送MMS

1164人阅读 评论(0) 收藏 举报

Ø         重要的概念术语

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->CreateAttachment2L(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->CreateAttachment2L(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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4583次
    • 积分:84
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档