To get SMS entries in the inbox

本文介绍了一种使用CMsvEntry和CMsvEntrySelection类获取并读取设备收件箱中短信(SMS)及多媒体消息(MMS)的方法。具体包括初始化会话、获取消息列表、读取消息内容等步骤。
// 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!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值