2011-06-29 34 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