发短信时发现超长短信发送时接收方接不完整,接收到的长度不一,网上搜索下,手机短信是有一个国际标准的。根据此标准,每条短信最多发送1120位,合140字节的内容,如果发送纯英文字符,由于英文ASCII采用 7位编码,所以1120位的限额可以传送1120÷7=160个字符。一旦传送的字符中包含中文、日文、韩文等双字节字符,不论中文还是西文,不论全角还是半角,都必须采用2个字节的8位编码,因此1120÷8÷2=70个字符,即最多传送70个字。
直接使用smsmanager发短信不完整 ,但是自带的短信应用就可以,查看下代码,发现
如果短信内容过长,可以使用SmsManager.divideMessage(String text)方法自动拆分成一个ArrayList数组,再根据数组长度循环发送,或者直接用sendMultipartTextMessage方法发送,参数与sendTextMessage类似,无非是短信内容变成了用divideMessage拆成的ArrayList,
代码:
String text = "周末有空木,滚床单去啊:http://aieasy.net/index.php/client/activity/getActivity/1453/4d544d314d4445794e4463774d44453da/0/10时间:2012-06-14 13:00 地点:gkgjkj ";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// sendsms1();
sendsms2();
}
private void sendsms1(){
SmsManager sm = SmsManager.getDefault();
ArrayList<String> parts = sm.divideMessage(text);
sm.sendMultipartTextMessage("13411011101", null, parts, null, null);
}
private void sendsms2(){
SmsManager sm = SmsManager.getDefault();
sm.sendTextMessage("13411011101", null, text, null, null);
}
可以试验下,我经过试验sendsms1可以发送完整,sendsms2发送不完整