【问题标题】:Create PDU for Android为 Android 创建 PDU
【发布时间】:2016-11-12 06:30:09
【问题描述】:

我目前正在写作和申请,即发送/接收短信。

出于单元测试的目的,我需要以编程方式创建 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?

【问题讨论】:

  • 我不清楚你为什么要对 PDU 进行单元测试,因为它是由 Android 处理的。你真的不想只测试你的逻辑而不是谷歌吗?
  • 这不是谁的逻辑问题。即使环境(移动服务提供商或设备)不是,我也在测试我的应用程序是否正常工作。目前,我正在使用直截了当的方法进行测试,我想开始广播“android.provider.Telephony.SMS_RECEIVED”,并附上 Intent 和适当的捆绑包,以测试我的代码是否正常工作。
  • @ibo.ezhe 您是否成功地以编程方式创建了一个可以使用 createFromPDU() 方法解码的 PDU?我已经围绕这个问题跳舞了一个星期。我有同样的问题,有 50 个赏金 - stackoverflow.com/q/12335642

标签: android unit-testing sms pdu


【解决方案1】:

PDU 通常在代码中进行硬编码。类似这样:

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

Here's 一个完整的例子说明如何做到这一点。

现在,您会问我“在哪里可以找到用于测试的 PDU?”你生成它。例如,您可以使用this在线服务。

希望对你有帮助!!

【讨论】:

  • 小绿色复选标记使其自动运行,是的。谢谢!
猜你喜欢
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
相关资源
最近更新 更多