android之短信发不出去,短信空指针,smsManager.sendTextMessage报空指针异常

昨天下午测试的时候遇到的问题,今早才解决,错误代码如下:String phone = dbHelper.getPhoneByTime(timeString);SmsManager sms = SmsManager.getDefault();Intent sentIntent = new Intent(Const.SENT_SMS_ACTION);PendingIntent sent

大家好,又见面了,我是全栈君。

昨天下午测试的时候遇到的问题,今早才解决,错误代码如下:

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账号...

(0)


相关推荐

  • 申请软件著作权步骤_著作权包括哪些

    申请软件著作权步骤_著作权包括哪些今年八月底版权中心系统升级,新系统相对好用一些,至少不用再拿IE访问了,但是多了一项实名认证。下面介绍新系统的操作流程。目录注册、登录和实名认证注册登录实名认证软件登记申请申请表填写鉴别材料身份证明文件权利归属证明文件其他材料提交材料变更登记注册、登录和实名认证首先访问版权中心系统:https://register.ccopyright.com.cn/login.html,如果老系统有账号直接登录即可,没有的话需要注册。注册点击注册按钮进入注册。根据实际情况选择个人或单位,每个个人或单位只能在

  • JAVA读取csv文件_java读取csv文件某一列

    JAVA读取csv文件_java读取csv文件某一列csv文件的介绍以下是来自百度百科的介绍逗号分隔值(Comma-SeparatedValues,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来

  • 计算机网络体系结构及其简单通信技术_简述计算机网络体系结构的概念

    计算机网络体系结构及其简单通信技术_简述计算机网络体系结构的概念(一)通信的基本概念:我们知道,通信的目的是快速、有效地传递信息。下面我们先来简单地介绍一点通信的基本知识:现代信息的表达方式有文字、符号、声音、图像数据等多种形式。为了实现信息传递,通常以光、电等信号作为信息的载体。信号:信息的表达形式信道:信号传输的通道,是信号传输媒介的总称。信源:发出信息的地方信宿:信息传送的终点根据传送信息的信道(信号传输媒介)不同,通信可分为有线通信和无线

  • Openstack组件部署 — Keystone Install &amp; Create service entity and API endpoints

    Openstack组件部署 — Keystone Install &amp; Create service entity and API endpoints

  • linux rsyslogd占用内存高_eventlog错误6008

    linux rsyslogd占用内存高_eventlog错误6008概述使用top命令查看内存占用时,发现rsyslogd内存占用很高。解决修改rsyslogd服务配置文件vim/usr/lib/systemd/system/rsyslog.service在Service配置中添加MemoryAccounting=yes,MemoryMax=80M,MemoryHigh=8M三项来限制服务内存使用率,如下所示[Unit]Description=SystemLo…

  • Linux下使用rm删除文件,并排除指定文件(亲测可行)[通俗易懂]

    Linux下使用rm删除文件,并排除指定文件(亲测可行)

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号