2011-06-29 33 views
5

我在SmsManagersendDataMessage()方法中遇到问题。用CDMA手机在Android上发送数据短信

在2个GSM模拟器之间发送数据短信似乎至少部分工作,但在Verizon CDMA电话上使用相同的方法时,我得到一个NullPointerException

我发现这个链接到一个bug report类似的东西:

“SmsManager.sendDataMessage()总是在CDMA设备失败,因为有 它成功没有代码路径失败中可见一斑。无线电日志, 其中com.android.internal.telephony.cdma.sms.BearerData.encodeEmsUserDataPayload() 引发CodingException。“

但我想知道是否有人发现了一个解决方法做 类似的CDMA手机。

+1

我认为现在我可能只是用sendMessage()解决,并在邮件中使用特殊标记,然后拦截所有邮件并检查标记,但这是一个黑客我宁愿不做 – bfly2000

+0

你还没有解决这个问题?我有同样的问题,并且我倾向于认为它是一个提供商(Verizon无线在我的情况下)相关的限制(或者更确切地说是限制)。 – xtrem

+0

嗨@ bfly2000,我迟到了,但我遇到了同样的问题。你知道这是否已经解决到目前为止,你如何获得无线电日志? – Simon

回答

0

此代码工作正常的GSM和CDMA两种

String sms = message.getText().toString(); 

      if(PhoneNumberUtils.isWellFormedSmsAddress(dest)) 
      { 
       for(String contact:multiContact) 
       { 
        smsManager.sendTextMessage(contact, null, sms, null, null); 
        Toast.makeText(SampleSms.this, "SMS messgae Sent to"+contact, Toast.LENGTH_LONG).show(); 
       } 

      } 
      else 
      { 
       Toast.makeText(SampleSms.this, "SMS messgae Sent failed", Toast.LENGTH_LONG).show(); 
      } 

我原来也用过sendDataMessage()但我得到的错误。但上面的代码工作正常

+0

即时通讯尝试发送数据短信,因为我使用此作为发送程序数据的特定方法。这不会是一个标准的文本消息,它会被短信客户端拦截。即使我将我的程序设置为具有较高的android:优先级为SMS_RECIEVED意图,我仍然必须处理解析并确保该消息来自我的程序,theres没有真正的方法来确保我不拦截真正的文本信息。 – bfly2000

+0

您是否在'sendDataMessage()'中使用了端口号?然而,这条消息被扣除 –

+0

当然,我不认为它没有港口号码就无法工作,我不确定它为什么被弃用,我希望有一种方法可以模拟cdma网络的数据短信在android的时刻 – bfly2000