大家好,又见面了,我是全栈君。
昨天下午测试的时候遇到的问题,今早才解决,错误代码如下:
String phone = dbHelper.getPhoneByTime(timeString);
SmsManager sms = SmsManager.getDefault();
Intent sentIntent = new Intent(Const.SENT_SMS_ACTION);
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
sentIntent, 0);
// create the deilverIntent parameter
Intent deliverIntent = new Intent(Const.DELIVERED_SMS_ACTION);
PendingIntent deliverPI = PendingIntent.getBroadcast(this, 0,
deliverIntent, 0);
sms.sendTextMessage(phone, null, msg, sentPI,deliverPI);//发送
总是在发送这行报空指针异常,第一反应就是变量没初始化,检查了好几遍,
手机号是从数据库读取出来的,msg是自动生成的,sentPI和deliverPI都是好的,
确实没有空指针,一遍一遍的找。。
今早上才意识到,短信的长度问题。
一条短信的长度是70个字,我数了一下,原来是要发送的内容太长了。
改成下面这样
if (message.length() > 70) {
ArrayList<String> msgs = sms.divideMessage(message);
for (String msg : msgs) {
if (msg != null) {
sms.sendTextMessage(phone, null, msg, sentPI,
deliverPI);
}
}
} else {
sms.sendTextMessage(phone, null, message, sentPI, deliverPI);
}
判断一下短信长度,过长的话分成多条发送就行了。
无法理解短信太长为什么会报空指针。
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(转载请说明出处)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121348.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...