当前位置: 代码迷 >> J2ME >> 第3问:如何发送长短信
  详细解决方案

第3问:如何发送长短信

热度:6542   发布时间:2013-02-25 21:34:27.0
第3问:怎么发送长短信?
如果直接使用MessageConnection send超过80个汉字的短信,会被截断。

后来找到这个:http://www.cnblogs.com/jobs/archive/2008/10/12/445584
按照这里的做法,分段发送,接受到的内容只是一个框。

不知道这个思路错误,还是我的代码错误?
Java code
            byte[] header = new byte[6];            header[0] = 0x05;            header[1] = 0x00;            header[2] = 0x03;                                     //计算分段            int seg = msg.length() / 70;            if ((msg.length() % 70) > 0)                seg++;                                                            //分段发送            for(int i= 0; i< seg; i ++)            {                                            header[3] = (byte)i;                header[4] = (byte)seg;                                header[5] = (byte)(i + 1);                                String s = new String(header, 0, header.length);                                if (((i + 1) * 70) >  msg.length())                    s += msg.substring(i * 70, msg.length());                else                    s += msg.substring(i * 70, (i + 1) * 70 - 1);                //sendMessage函数应该没问题,小于80个字符的短信发送正常,使用的文本形式发送                comm_lib.sendMessage(s, phoneNumber.getString());            }




------解决方案--------------------------------------------------------
对这个没研究 关注下
------解决方案--------------------------------------------------------

手机中发?

不是所有的SP都支持这样做的。

------解决方案--------------------------------------------------------
以前在一个移动接口上有过类似的经历,分多次发送,不够sendMessage字节要求的凑够就可以了
------解决方案--------------------------------------------------------
如果直接使用MessageConnection send超过80个汉字的短信,会被截断。 
-------------
也在关注这个问题,UP.
------解决方案--------------------------------------------------------
引用楼主 CoolSlob 的帖子:
Java code
header[3] = (byte)i;
header[4] = (byte)seg;
header[5] = (byte)(i + 1);

String s = new String(header, 0, header.length); //我觉的这边出错了。这里的header转成String应该是 0500 03** **** ,s.length()应该为3,而你那个s 排列为 05 00 03 ×× ×× ×× ,长度是6了,改下就可以了。用hex转下就没问题了
  相关解决方案