我的意思是唯一的区别是port参数。这与CDMA和GSM手机有什么关系吗?我有这个问题,因为当我尝试从没有端口的CDMA发送短信时它很顺利但是使用端口我的应用程序崩溃了。通过查看它显示给我的日志
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1253)
at android.os.Parcel.readException(Parcel.java:1235)
at com.android.internal.telephony.ISms$Stub$Proxy.sendData(ISms.java:558)
at android.telephony.SmsManager.sendDataMessage(SmsManager.java:524)
这是一个CDMA问题吗?因为我有sprint htc手机而且我在印度使用它作为漫游,我猜可能就是这种情况。
这是我用来从CDMA发送短信的API smsMgr.sendDataMessage(receiverPhoneNumber, null, (short)1001, message.getBytes(), sentPendingIntent, deliveredPendingIntent);
但是从这个API来看,它适用于CDMA和GSM smsMgr.sendTextMessage(receiverPhoneNumber, null, message, sentPendingIntent, deliveredPendingIntent);
再次sendDataMessage和sendTextMessage之间的差异是什么? 我已经阅读了这些方法的文档但是对于我的场景来说它没有正确适合
帮助感谢。
答案 0 :(得分:0)
查看文档here,如果您没有使用已弃用的SmsManager
并且正在使用API 4中提供的版本,则CDMA和GSM似乎不应成为问题( android.telephony.SmsManager
)。
此类已弃用。替换为android.telephony.SmsManager 支持GSM和CDMA。
关于数据消息和文本消息之间的区别,我认为数据消息包括图片文本之类的内容,而sendTextMessage
是纯文本。从您提供的错误消息中可以看出,在sendDataMessage
调用之前,某些内容可能已被错误地实例化(在某处留下了空值) - 您能提供该代码和值receiverPhoneNumber, null, (short)1001, message.getBytes(), sentPendingIntent, deliveredPendingIntent
的Logcat吗?