SmsManager 发不出短信

代码如下:

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, smsText, null, null);

首先确认已经添加了发送短信的权限,但是还是在模拟器和实机上都发不出短信。模拟器上无任何反应,小米MIUI上的现象为:系统提示应用需要发送短信,询问用户是否允许,但是即使允许也发不出任何短信。Logcat没有任何报错。

解决方法

实际上是因为短信内容有长度限制,发送的字符串超过长度限制,短信就彻底发不出了。最好的解决办法是不要发那么长的短信,精简字数,把信息压缩到一条短信内。实在不行,可以考虑切分成多条发送。

SmsManager提供了拆分短信的方法:

smsManager.divideMessage(String text)

参数是长短信,返回值是拆分后短信的ArrayList。

模拟器上短信中文乱码

这个应该是模拟器的bug,以实机为准。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。