2011-04-28 68 views
3

我目前正在編寫和應用程序,即發送/接收SMS消息。爲Android創建PDU

爲了進行單元測試,我需要以編程方式創建PDU。解碼是很容易的:

Bundle bundle = intent.getExtras(); 
if (bundle != null) { 
    /* Get all messages contained in the Intent*/ 
    Object[] pdusObj = (Object[]) bundle.get("pdus"); 
    for (int i = 0; i < pdusObj.length; i++) { 
     SmsMessage msg = SmsMessage.createFromPdu((byte[])pdusObj[i]); 
    } 
} 

有沒有什麼合適的方式來創建 PDU programamtically?

+0

我不清楚你爲什麼單元測試PDU,因爲它是由Android處理的。難道你不是真的想測試你的邏輯而不是谷歌嗎? – Jim 2011-04-28 18:36:23

+0

這不是它的邏輯問題。即使環境(移動服務提供商或設備)不是,我也正確測試了我的應用程序。目前,我正在測試使用直接的方法,並且我想用Intent和適當的捆綁包開始廣播'android.provider.Telephony.SMS_RECEIVED'來測試我的代碼是否正常工作。 – 2011-04-29 15:01:09

+0

@ ibo.ezhe你有沒有成功創建一個可以用createFromPDU()方法解碼的PDU?我一直在圍繞這個問題跳舞一週。我有同樣的問題與50賞金 - http://stackoverflow.com/q/12335642/ – StrikeForceZero 2012-09-15 10:04:22

回答

9

典型的PDU在代碼中被硬編碼。與此類似:

String pdu = "07914151551512f2040B916105551511f100006060605130308A04D4F29C0E"; 
SmsMessage sms = SmsMessage.createFromPdu(HexDump.hexStringToByteArray(pdu)); 

Here's一個關於如何做到這一點的完整示例。

現在,你會問我「我在哪裏可以找到測試PDU?」你生成它。例如,您可以使用this在線服務。

我希望這有助於!

+0

謝謝,將獎金自動轉移? – 2011-09-28 14:36:59

+0

小綠色複選標記使其成爲自動,是的。謝謝! – Emmanuel 2011-09-28 17:55:24

+0

請更新鏈接...它已經死了 – mboy 2016-11-07 07:41:16