专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Brew

求教 关于发送短信手机重启以及电话本的有关问题

发布时间:2010-05-30 20:14:03 文章来源:www.iduyao.cn 采编人员:星星草
求教 关于发送短信手机重启以及电话本的问题
目前在做一个短信功能的应用
已经到了真机测试阶段
现在面临两个问题
1.有些手机,在发送短信时会莫名重启,并且不是每次都会重启,大概有一半的概率,但短信能发送成功.
    发送短信用的是ISMS_SendMsg()接口;
2.有些手机,在读取电话本的时候,只能导入存在手机中的内容,无法读取SIM卡中的内容.

望高手指教,先谢过 
------最佳解决方案--------------------
重启有可能是读野指针造成的。可以检查一下内存分配释放有没有什么问题。也有可能是机器上的问题,可以换一台试一下。
------其他解决方案--------------------
先谢谢bsr2009同学

我现在的情况是  在模拟器上看不出任何指针和内存异常的问题 , 并且OUTPUT WINDOW也没有任何错误的提示. 模拟器上也不会死机.

但是真机上有时,是有时...执行到ISMS_SendMsg()就重启了...

在高通论坛上找到过一个相似的帖子,说是回调没有设置好,但是我目前并没看出来自己的回调有什么问题.

重启的几率大概在30%左右

继续求解  希望各位大侠点拨
------其他解决方案--------------------
模拟器没有问题,也说明不了什么
重启肯定是发生了某种异常,可能是硬件异常,也可能是软件异常
除了确认的手机外,其他的手机是否也存在相同的问题?
实机环境下,问题不发生和问题发生时,
ISMS_SendMsg出力参数分别返回什么?
时序上有什么差分?
CB中各变量的生命周期?
....

------其他解决方案--------------------
回楼上

ISMS_SendMsg的返回没有问题
并且虽然重启,但短信能发送成功.

时序用ISHELL_PostEvent处理的

CB.....我也怀疑CB有问题.....但是不知道在哪.....
------其他解决方案--------------------
有JTAG不,debug一下,
重启时,CB调到了吗?如果调到了,看看执行到哪一步时发生重启?

CB关联的上下文的生命周期没有问题?
举个可能不恰当例子,
比如说app终了前,会进行某个处理,这个处理会调到一个CB,
CB中需要利用app的上下文,
受各种影响,有时这个CB被调用的时机可能有点微妙,
可能在app终了前或者app终了后。
如果app终了后,即上下文都释放掉了,那么CB调用时,问题发生
------其他解决方案--------------------

现在的情况是单独给一个号码发送短信是没有问题的, 重启只有在群发的时候才会发生.

所以想问一下关于那个回调

是不是每发一条短信 都要重新设置一个回调  发送完成之后CANCLE掉?

还是设置一个回调 等全部发送完毕之后再注销

------其他解决方案--------------------
void SendSms::StartSend()
{
nSendNow = 0;
nAllToSend=0;
m_nSms = 0;
nCurSend = 0;
n_SmsId=0;
int i ;
for(i = 0 ; i < m_pBase->m_pItemMenu->m_nItemNum ; i++ )
{
if(m_pBase->m_pItemMenu->m_pItemData[i]->nSendFlag == 2 )
{
nAllToSend ++;
}
}
if( m_pBase->m_pToSendSms != NULL)
{
int nTotalLen = WSTRLEN(m_pBase->m_pToSendSms); 
if( m_pBase->m_pPhoneInfo->nMaxWord != 0)
{
int a = nTotalLen/m_pBase->m_pPhoneInfo->nMaxWord;
int b = nTotalLen%m_pBase->m_pPhoneInfo->nMaxWord;
m_nSms = (b==0)?a:(a+1);
}
else
m_nSms = 1;
}
nAllToSend = nAllToSend*m_nSms;
// CALLBACK_Init(&m_cb,SendCB,this);
SendAction();
}

void SendSms::SendAction()
{
int  k = 0;
boolean bToSend = FALSE;

for(k = 0 ; k < m_pBase->m_pItemMenu->m_nItemNum ; k++)
{
if( m_pBase->m_pItemMenu->m_pItemData[k]->nSendFlag == 2)
{
AECHAR *pwNumber =(AECHAR *)m_pBase->m_pItemMenu->m_pItemData[k]->dwData;
if( pwNumber == NULL)
{
continue;
}
FREEIF(m_pszNumber);
int nLen =  WSTRLEN(pwNumber)+1;
m_pszNumber =(char *)MALLOC(nLen);
m_pszNumber = (char *)WSTRTOSTR(pwNumber,m_pszNumber,nLen);
bToSend = TRUE;
break;
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: