//define receive sms struct member variable. Err err; UInt16 gTelRefNum; TelAppID gTelAppID;
TelSmsMultiPartExtensionType extensionType; TelSmsExtensionType ext; TelSmsDateTimeType gTeldatetime;
TelSmsGetAvailableStorageType m_Stores; UInt16 m_Index; UInt16 m_Storage=0; UInt16 m_Retrieved=0; UInt16 m_StorageCount=0; UInt16 m_DataSize; TelSmsDeliveryMessageType m_Sms; TelSmsDeliveryAdvancedGSMType tmp;
//load telephone library
UInt16 TelLoadLibrary()
{
err = SysLibFind(kTelMgrLibName, &gTelRefNum);
if(err!=0) err = SysLibLoad(kTelMgrDatabaseType,kTelMgrDatabaseCreator, &gTelRefNum); if (err==errNone||err==0)
return gTelRefNum;
else
return 0;
}
void InitSms() // the receive sms struct member variable is filled, Please you point out where is error? { extensionType.bytesSent = 0; extensionType.partCurrent = 0; extensionType.partCount = 0; extensionType.partId = 0;
ext.extensionTypeId = kTelSmsMultiPartExtensionTypeId; ext.extension.mp = extensionType;
gTeldatetime.absolute = false; gTeldatetime.dateTime = 86400*2;
tmp.protocolId = kTelSmsDefaultProtocol;
tmp.replyPath = false;
tmp.serviceCenterNumber = "+8613800755500";//sms center code,there is china
tmp.serviceCenterNumberSize = kTelMaxPhoneNumberLen + 1;
m_Sms.version = kTelSmsAPIVersion; m_Sms.dataSize = m_DataSize;
m_Sms.data = (unsigned char*)MemPtrNew(m_DataSize + 1 );
m_Sms.data[m_Sms.dataSize]='\0';
m_Sms.dataCodingScheme = kTelSmsDefaultGSMEncoding;
m_Sms.originatingAddressSize=kTelMaxPhoneNumberLen + 1;
m_Sms.originatingAddress =(char*)MemPtrNew(m_Sms.originatingAddressSize);
m_Sms.otherToReceive=false;
m_Sms.reportDeliveryIndicator=false;
m_Sms.standardType = kTelNwkGSM;
m_Sms.extensionsCount = 1;
m_Sms.extensionsP = &ext;
m_Sms.advancedParams.advancedGSM=tmp;
}
void CleanSms() { memset(&ext,0,sizeof(ext)); memset(&tmp,0,sizeof(tmp)); memset(&extensionType,0,sizeof(extensionType)); memset(&gTeldatetime,0,sizeof(gTeldatetime)); memset(&m_Sms,0,sizeof(m_Sms)); }
const char* Next() // read every sms content.
{ m_Index++;
CleanSms();
InitSms();
m_Sms.index = m_Index;
//I have track here it's right, m_Index's value is change for 0 to sms count' value
// m_StorageCount is total of sms count
if (m_Retrieved < m_StorageCount) { //there is the sticking point.it can't read sms content normally // I guess &m_Sms it's error be filled?
err = TelSmsReadMessage(gTelRefNum, gTelAppID,&m_Sms,NULL);
if( err==errNone)
{
m_Retrieved ++;
return (const char*)m_Sms.data;
}
else
{
if (err == telErrInvalidIndex)
m_Retrieved = m_StorageCount;
return "failed"; }
} } above function be used it's return failed all at times. why? thank you in advance, Please help me!
_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com
-- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/