日期:2014-05-20  浏览次数:20806 次

第3问:怎么发送长短信?
如果直接使用MessageConnection send超过80个汉字的短信,会被截断。

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

不知道这个思路错误,还是我的代码错误?
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转下就没问题了