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)


相关推荐

  • Java异常类型及处理

    Java异常类型及处理前言:Java异常,大家都很熟悉。但是对于具体怎么分类的,JVM对其怎么处理的,代码中怎么处理的,应该怎么使用,底层怎么实现的等等,可能就会有些不是那么清晰。本文基于此详细捋一下异常类型,实现以及使用时应怎么注意。一、异常实现及分类1.先看下异常类的结构图上图可以简单展示一下异常类实现结构图,当然上图不是所有的异常,用户自己也可以自定义异常实现。上图已经足够帮我们解释和理解异常…

  • linux宝塔卸载,宝塔面板卸载与安装[通俗易懂]

    linux宝塔卸载,宝塔面板卸载与安装[通俗易懂]一键卸载宝塔Linux面板及运行环境命令1-使用xshell链接服务进入服务器命令:wgethttp://download.bt.cn/install/bt-uninstall.sh2-执行脚本命令:shbt-uninstall.sh3-根据提示4-完成更多功能及文档2,安装宝塔面板执行以下代码进行安装宝塔6.9免费版。宝塔6.9版本已经很稳定了,推荐大家直接安装6.9版本(注意:…

  • Spring学习总结(一)入门

    Spring学习总结(一)入门

    2021年11月30日
  • Java HttpURLConnection setRequestProperty(“content-length“, “0“)不起作用

    Java HttpURLConnection setRequestProperty(“content-length“, “0“)不起作用Post验证Url合法的时候,今天突然遇到一个用IIS的客户,结果返回411的statuscode.搜索原因是请求头中没有设置Content-Lenght。网上的教程说用setRequestProperty(“content-length”,“0”)设置一下,结果我测试还是返回411.调试发现:为了安全,这些头默认是不允许指自定义的。可以通过下面方法打开,尽量将下面的语句放到main中:System.setProperty(“sun.net.http.allowRestrictedHead

  • mysql tinyint长度_mysql设置取值范围0到100

    mysql tinyint长度_mysql设置取值范围0到100Tinyint占用1字节的存储空间,即8位(bit)。那么Tinyint的取值范围怎么来的呢?我们先看无符号的情况。无符号的最小值即全部8位(bit)都为0,换算成十进制就是0,所以无符号的Tinyint的最小值为0.无符号的最大值即全部8bit都为1,11111111,换算成十进制就是255.这很好理解。有符号的Tinyint的取值范围是怎么来的呢?在计算机中,用最高位表示符号。0表示正,1表示…

  • UOS命令_uos手动安装教程

    UOS命令_uos手动安装教程其他Linux发行版中用习惯了ll命令,在UOS中居然木有提供,其实ll命令就是ls-alF命令的一个别名,加到.bashrc里面就行了$vim~/.bashrc#在文件末尾追加下面内容aliasll=’ls-alF’$source~/.bashrc$ll

发表回复

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

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