mtk 11B版本中的srv_sms_send_asc_text_msg函数发送短信乱码的问题?
时间:10-02
整理:3721RD
点击:
我想使用srv_SMS_send_asc_text_msg函数发送短信,因为这个函数发送短信的速度最快;
extern void srv_sms_send_asc_text_msg( char *asc_content, char *asc_number, srv_sms_SIM_enum sim_id, SrvSmsCallbackFunc callback_func, void *user_data);
我传入的电话号码和短信内容(全部英文)都是ascii编码,可是对方收到的短信却是乱码,这是什么原因造成的?如何解决?
extern void srv_sms_send_asc_text_msg( char *asc_content, char *asc_number, srv_sms_SIM_enum sim_id, SrvSmsCallbackFunc callback_func, void *user_data);
我传入的电话号码和短信内容(全部英文)都是ascii编码,可是对方收到的短信却是乱码,这是什么原因造成的?如何解决?
你确认下传输类型哦,是7bit,8bit还是其他一个什么类型,具体忘记了,总之是unicode编码,ascii码是7bit,确认下你传输之前是不是已经乱码了?
这个函数没有地方可以设置PDU的类型
传输之前是ascii编码,不是乱码;
另外,查看了srv_sms_send_asc_text_msg函数的实现代码,函数内部也没有对传输类型进行设置
可以试试我这个函数:
- void SendTextMessage(char *pnumber, char *ptext)
- {
- /*----------------------------------------------------------------*/
- /* Local Variables */
- /*----------------------------------------------------------------*/
- SMS_HANDLE sms_handle;
- S32 textlength = 0;
- S8 *content_buf = NULL;
- S8 ucs2_number[(SRV_SMS_MAX_ADDR_LEN + 1)*ENCODING_LENGTH] = {0};
-
- /*----------------------------------------------------------------*/
- /* Code Body */
- /*----------------------------------------------------------------*/
- if (mmi_sms_is_sms_ready() == MMI_FALSE)
- {
- return;
- }
-
- sms_handle = srv_sms_get_send_handle();
- srv_sms_set_content_dcs(sms_handle, (srv_sms_dcs_enum)SMSAL_DEFAULT_DCS/*SMSAL_UCS2_DCS*/);
- srv_sms_set_sim_id(sms_handle, SRV_SMS_SIM_1);
- /* the sending screen should not show because the blocking mechanism of JAVA */
- srv_sms_set_send_type(sms_handle, SRV_SMS_BG_SEND);
- /* Do not allow empty SC address */
- //srv_sms_set_not_allow_empty_sc(sms_handle);
- srv_sms_set_counter_without_change(sms_handle);
- srv_sms_set_no_sending_icon(sms_handle);
-
- mmi_asc_n_to_ucs2((S8*)ucs2_number, (S8*)pnumber, SRV_SMS_MAX_ADDR_LEN);
- srv_sms_set_address(sms_handle, (S8*)ucs2_number);
- textlength = strlen(ptext) * ENCODING_LENGTH;
- content_buf = (S8*)OslMalloc(textlength);
- memset(content_buf, 0, textlength);
- mmi_asc_to_ucs2(content_buf, (S8*)ptext);
- srv_sms_set_content(sms_handle, (S8*) content_buf, (U16) textlength);
- srv_sms_send_msg(sms_handle, SendTextMessageCB, NULL);
- OslMfree((S8*)content_buf);
- }
- static void SendTextMessageCB(srv_sms_callback_struct *cb)
- {
- if(cb->result)
- {
- MC_TRACE(0, "SendTextMessageCB send seccussful.action=%d,cause=%d.",cb->action, cb->cause);
- }
- else
- {
- MC_TRACE(0, "SendTextMessageCB send failed.action=%d,cause=%d.",cb->action, cb->cause);
- }
- }
liujin使用的方法和我原先使用的方法基本相同,多用了两个设置函数:
srv_sms_set_counter_without_change(sms_handle);
srv_sms_set_no_sending_icon(sms_handle);
经过测试,发送速度相对srv_sms_send_asc_text_msg函数而言,还是慢了很多,所花的时间是srv_sms_send_asc_text_msg函数的一倍还多。
譬如发送一条请求短信到手机,手机收到后使用srv_sms_send_asc_text_msg函数返回短信,整个过程只花了10秒钟;
而如果使用上述的函数,需要25秒钟
LZ短信问题搞定了吗?
有没有遇到过发短信不成功,而且不停重启的情况?
多谢指教先。
