Android SmsManager 发送超长短信 接收不完整

本文介绍了当短信内容超过标准长度时如何确保完整发送的方法。通过使用SmsManager的divideMessage方法将短信内容拆分为多个部分,并利用sendMultipartTextMessage方法实现多段发送。
部署运行你感兴趣的模型镜像

发短信时发现超长短信发送时接收方接不完整,接收到的长度不一,网上搜索下,手机短信是有一个国际标准的。根据此标准,每条短信最多发送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发送不完整

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值