android - 为什么在 HTC Desire 上发送短信时会出现 NullPointerException,或者什么是 SubmitPdu?

标签 android sms

所以我得到了这个堆栈跟踪:

java.lang.NullPointerException    
   at android.telephony.SmsMessage$SubmitPdu.<init>(SmsMessage.java:132)
   at android.telephony.SmsMessage.getSubmitPdu(SmsMessage.java:551)
   at android.telephony.SmsManager.sendTextMessage(SmsManager.java:228)
   at android.telephony.SmsManager.sendTextMessage(SmsManager.java:107)
   at com.emergency.button.SMSSender.safeSendSMS(SMSSender.java:91)
   at com.emergency.button.EmergencyActivity$EmergencyThread
       .sendSMS(EmergencyActivity.java:294)
   at com.emergency.button.EmergencyActivity$EmergencyThread
       .sendMessages(EmergencyActivity.java:386)
   at com.emergency.button.EmergencyActivity$EmergencyThread
       .run(EmergencyActivity.java:266)

这就是我调用 sendTextMessage 的方式,我不验证消息长度或电话号码的有效性:

sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);

这个错误似乎只发生在 HTC Desire 或 HTC Wildfire with android version 2.2 or 2.21 所以我挖了 android 平台源码(这实际上并不像我想象的那么容易)并发现:
SmsMessage.java once upon a time虽然这可能不相关,因为我看到一些行号没有对齐。
emergency button project是开源的,因此您可以查看代码以供引用。我可能应该注意,我无法自己测试,我没有任何手机型号。

最佳答案

您可能因消息太长而遇到此问题。不过,我不知道为什么它只会发生在某些手机上。

http://code.google.com/p/android/issues/detail?id=3718

关于android - 为什么在 HTC Desire 上发送短信时会出现 NullPointerException,或者什么是 SubmitPdu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580952/

相关文章:

android - 我是否需要注销 'anonymous' BroadcastReceiver

java - 如何在 Java 中解析 .net DataSet?

android - 如何检测android上的屏幕压力?

iphone - iOS 4 有一个用于发送消息的应用内 SMS SDK,但是有没有办法让您的应用程序接收传入的 SMS 消息?

android - 是否可以从 linux 层上运行的任何脚本/程序访问 Android API?

java - 网站短信集成

android - 如何在 MapBox iOS/Android SDK 中使用离线样式定义或 map 瓦片?

android - 连接 PhoneGap 与本地主机网络服务

android - ProgressDialog 在外部 AsyncTask 中不起作用

android - 在 Android 中通过 MMS/SMS 监听器区分 MMS 和 SMS