我正在编写一个用于测试短信收发器的应用。目前我有点卡在接收数据短信到特定端口的用例上。我发送真正的数据短信没有问题,但我想通过欺骗广播事件来模拟它。
现在我陷入困境:我需要在代码中设置意图数据。
在XML中,它看起来像这样
<data
android:scheme="sms"
android:host="*"
android:port="12345" />
它要匹配的intent过滤器就像这样构建
intentFilter.addDataScheme("sms");
intentFilter.addDataAuthority("*", PORT);
我的问题是如何从上面的XML创建正确的URI?
答案 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);