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 09:11, 28 June 2007.

S60第三版中访问SMS设置的新API

From Forum Nokia Wiki

  • 设备, 软件 版本:

S60 3rd Edition


  • 说明:

因为S60第三版中出于平台安全的考虑,所有信息设置已经被转移到Central Repository数据存储中。这样的转变导致老的SMS设置API(如CSmsSettings存储和输出函数)无法使用,当需要在S60第三版上发送一个短信时再使用它们会引发KErrGsmSMSUnspecifiedProtocol和KErrGsmSMSInvalidMandatoryInformation错误。


  • 详细描述:

现在在CSmsAccount中有一个新的API,下面这段代码就展示了如何使用该类去设置SMSC地址以便发送消息。

// ----------------------------------------
 
//  
 
//  Sets the message center to the message
 
//
 
// ----------------------------------------
 
TInt CFW3MsgEngine::SetSMSCL()
{
 
    TInt err = 0;
    // CSmsHeader encapsulates data specific for sms messages,
    // like service center number and options for sending.
    CSmsHeader& header = iMtm->SmsHeader(); 
    CSmsSettings* settings = CSmsSettings::NewL();
    CleanupStack::PushL(settings);
    CSmsNumber* sc = CSmsNumber::NewL(); //CSmsNumber* sc = 0;
    CleanupStack::PushL(sc);
    //--------- SMSC & header set-up
    settings->CopyL(iMtm->ServiceSettings()); // restore existing settings
    // set send options
    settings->SetDelivery(ESmsDeliveryImmediately); // set to be delivered immediately
    header.SetSmsSettingsL(*settings);
    // Set SMSC address
 
    if (header.Message().ServiceCenterAddress().Length() == 0)
    {
        // No smsc set. We assume there is at least one sc number defined and use
        // the default SC number. 
        CSmsSettings* serviceSettings = &(iMtm->ServiceSettings());
        // if number of scaddresses in the list is null
        if (!serviceSettings->ServiceCenterCount()) // New messaging API uses new methods
        {
              // here there should be a dialog in which user can add sc number
              _LIT(KNotSet,"SMSC not set");
              // Display a Note
              CAknGlobalNote* globalNote = CAknGlobalNote::NewLC();
              globalNote->ShowNoteL(EAknGlobalInformationNote  , KNotSet); 
              CleanupStack::PopAndDestroy(); // globalNote
        }
        else
        {  
            // set sc address to default.           
            sc->SetAddressL((serviceSettings->GetServiceCenter(serviceSettings->DefaultServiceCenter())).Address()); 
            // New messaging API uses new methods
            header.Message().SetServiceCenterAddressL(sc->Address());
        }
    }
    //--------- SMSC & header set-up
    CleanupStack::PopAndDestroy(2); // sc, settings
    return err;
    }
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtopicQUqfnTopicZsmsQ
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX