This page was last modified 02:45, 4 July 2008.
使用RSendAs发送短消息
From Forum Nokia Wiki
适用版本:
Series60 3rd
解决方案:
在OS9.x中发送短消息最方便的方法就是RSendAs了,仅仅需要传入消息的接收者和消息正文,其他的交给RSendAs完成。
但是对于中文短消息应用这个方法却不适用,因为使用RSendAs发送短信,使用的都是默认的设置,并且不能修改,消息正文都会转换成7-bit-sms的格式,所有不是以7-bit-sms格式定义的字符都以问号代替,中文就不是以7-bit-sms格式定义的,因此使用RSendAs发送的短信都显示为问号,这点必须注意。
以下的代码演示了如何使用RSendAs:
CPP文件:
CRSendAsSender* CRSendAsSender::NewL(MRSendSMSObserver& aObserver,const TDesC& aMessage,const TDesC& aRecipients) { CRSendAsSender* self = new(ELeave)CRSendAsSender(aObserver); self->ConstructL(aMessage,aRecipients); return self; } CRSendAsSender::CRSendAsSender(MRSendSMSObserver& aObserver):CActive(0),iObserver(aObserver) { } CRSendAsSender::~CRSendAsSender() { Cancel(); iSendAsMessage.Close(); iSendAs.Close(); } void CRSendAsSender::ConstructL(const TDesC& aMessage,const TDesC& aRecipients) { CActiveScheduler::Add(this); User::LeaveIfError(iSendAs.Connect()); iSendAsMessage.CreateL(iSendAs, KUidMsgTypeSMS); iSendAsMessage.AddRecipientL(aRecipients, RSendAsMessage::ESendAsRecipientTo); iSendAsMessage.SetBodyTextL(aMessage); iSendAsMessage.SendMessage(iStatus); SetActive(); } void CRSendAsSender::DoCancel() { iSendAsMessage.Cancel(); } void CRSendAsSender::RunL() { iObserver.MessageSentL(iStatus.Int()); }
头文件:
#include <e32base.h> #include <F32FILE.H> #include <BADESCA.H> #include <rsendasmessage.h> #include <rsendas.h> #include <MTCLREG.H> class MRSendSMSObserver { public: virtual void MessageSentL(TInt aError) = 0; }; class CRSendAsSender : public CActive { public: static CRSendAsSender* NewL(MRSendSMSObserver& aObserver,const TDesC& aMessage,const TDesC& aRecipients); ~CRSendAsSender(); protected: void DoCancel(); void RunL(); private: CRSendAsSender(MRSendSMSObserver& aObserver); void ConstructL(const TDesC& aMessage,const TDesC& aRecipients); private: MRSendSMSObserver& iObserver; RSendAs iSendAs; RSendAsMessage iSendAsMessage; };
