使用端口广播data_sms_received

时间:2015-05-20 11:36:35

标签: android android-intent uri

我正在编写一个用于测试短信收发器的应用。目前我有点卡在接收数据短信到特定端口的用例上。我发送真正的数据短信没有问题,但我想通过欺骗广播事件来模拟它。

现在我陷入困境:我需要在代码中设置意图数据。

在XML中,它看起来像这样

<data
  android:scheme="sms"
  android:host="*"
  android:port="12345" />

它要匹配的intent过滤器就像这样构建

intentFilter.addDataScheme("sms");
intentFilter.addDataAuthority("*", PORT);

我的问题是如何从上面的XML创建正确的URI?

1 个答案:

答案 0 :(得分:2)

找到solution

  

<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>]

Uri dataUri = Uri.parse("sms://*:"+port);
        Intent intent = new Intent();
        intent.setAction("android.intent.action.DATA_SMS_RECEIVED")
                .putExtra("pdus", new Object[]{pdu})
                .setDataAndNormalize(dataUri);