// inbox context
CMsvEntry* entry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId, TMsvSelectionOrdering());
CleanupStack::PushL(entry);
// get list of SMS entries in inbox
CMsvEntrySelection* children = entry->ChildrenWithMtmL(KUidMsgTypeSMS);
CleanupStack::PushL(children);
:
:
CleanupStack::PopAndDestroy(2); // entry, children

To access contents of message:

// SMS arrived
CBaseMtm* smsMtm = iMtmReg->NewMtmL(KUidMsgTypeSMS);
CleanupStack::PushL(smsMtm);
// entryId extracted from 'children' list
TMsvEntry msvEntry = (iSession->GetEntryL(entryId))->Entry();
smsMtm->SwitchCurrentEntryL(entryId);
smsMtm->LoadMessageL();
// sender info stored in details
TFileName sender = msvEntry.iDetails;
// body
TFileName body = smsMtm->Body().Read(0);
:
:
CleanupStack::PopAndDestroy(smsMtm);
// first take a handle to folder
TMsvSelectionOrdering sort;
sort.SetShowInvisibleEntries(ETrue); // we want to handle also the invisible entries
// Take a handle to the folder entry
CMsvEntry* parentEntry = CMsvEntry::NewL(*iSession, KMsvGlobalInBoxIndexEntryId, sort);
//CMsvEntry* parentEntry = CMsvEntry::NewL(*iSession, aFolder, TMsvSelectionOrdering());
CleanupStack::PushL(parentEntry);
// A selection of all MMS entries
CMsvEntrySelection* entries = parentEntry->ChildrenWithMtmL(KUidMsgTypeSMS);
CleanupStack::PushL(entries);
// go through the selection and read descriptions into a list
for(TInt i = 0; i < entries->Count(); i++)
...{
// we can use the mtm to go through the selection.
iSMSmtm->SwitchCurrentEntryL( (*entries)[i] ); // this is where i get the unhandled exception
iSMSmtm->LoadMessageL();
aDescriptorList.AppendL(iSMSmtm->Body().Read(i, 30));
}
CleanupStack::Pop(2); // parentEntry, entries
delete parentEntry;
return entries; // Caller must free this memory after use!
本文介绍了一种使用CMsvEntry和CMsvEntrySelection类获取并读取设备收件箱中短信(SMS)及多媒体消息(MMS)的方法。具体包括初始化会话、获取消息列表、读取消息内容等步骤。

被折叠的 条评论
为什么被折叠?



