昨天下午测试的时候遇到的问题,今早才解决,错误代码如下:
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(转载请说明出处)
android错误之短信发不出去,短信空指针,smsManager.sendTextMessage报空指针异常,布布扣,bubuko.com