Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

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;
};
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX