如何在循环中向多个收件人发送不同的SMS

时间:2011-06-02 04:59:49

标签: symbian

我正在使用Symbian C ++创建我的代码,我正在使用S60 5th Ed SDK

我想知道如何向for循环中的多个收件人发送不同的邮件 - 他们的正文文本不一样?

我已经尝试过以下示例,但是当我尝试在循环中使用它时,由于ActiveObjects属性而崩溃,因为我应该等待AO完成再重新调用它。

Sending_SMS_in_S60_3rd_Edition_MTM

下面是我需要做的例子:

SendSMSL();     // **I call this function once to start the process**

// **iRecepients is a CDesCArray contains phone numbers**
// ** iSMSBody is a CDesCArray contains each contact SMS body text**

void CSMS::SendSMSL()
  {

  if(iRecepients->Count() >= 1) 
    {
        TInt x = iRecepients->Count()-1;
        TInt y = iSMSBody->Count()-1; 

        // **If the sms validating and scheduling succeeded then delete last item from both arrays**
        if(iSMSHandler->SendL((*iRecepients)[x],(*iSMSBody)[y])
            {
                iRecepients->Delete(x);
                iSMSBody->Delete(y);    
            }
    }
 }

现在,在上面的代码中,我调用了iSMSHandler-> SendL(),它使用AO发送短信,在 iSMSHandler 对象 RunL()函数中,我回调上面的函数 CSMS :: SendSMSL(),它反过来检查是否还有iRecepients元素,然后再次调用iSMSHandler-> SendL()AO,并保持这种方式直到不再有iRecepients。

期待听到您对上述修改的反馈意见。

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

您发布的链接对我不起作用,因此我看不到剩下的代码。

假设iSmsHandler是一个使用活动对象发送SMS消息的类, 我看到你的循环有几个问题。

1)您需要等待第一个异步SendL完成才能发出下一个SendL 2)在SendL完成之前,buf变量不能超出范围。 (这可能是你崩溃的原因)

我建议您将textbuffer保留在其他位置,例如与iSmsHandler一起,然后对SendL完成时调用的活动对象进行编码以发出下一个SendL。

所有这些都是猜测,因为我不知道iSmsHandler是什么类......