将C2DM发送到SMS收件箱

时间:2012-02-22 22:06:33

标签: android android-intent

我想将通过C2DM收到的消息发送到手机短信收件箱,并得出结论认为这可能是因为让Android认为C2DM是真正的短信并让它在它上面发挥作用。

我已经浏览了相当多的Android源代码,并且在SMS_RECEIVED意图被触发之前,手机堆栈中没有任何显着的事情发生,这让我相信最简单的方法是从中创建一个PDU c2DM有效载荷并触发SMS_RECEIVED意图,理论上应该使标准SMS应用程序使用它并将其写入SMS收件箱。

下面的代码片段是一个概念验证 - 我已经硬编码了PDU来测试代码。 PDU有效并使用实用程序生成。

它似乎不起作用,我想知道我是否做了一些明显错误的事情,或者说这条路线是不是非首发。

String pdu = "07911326040000F0040B911346610089F60000208062917314080CC8F71D14969741F977FD07";                
byte[][] pdus = null;

pdus = new byte[1][];
pdus[0] = hexStringToByteArray(pdu);
Intent intent = new Intent("android.provider.Telephony.SMS_RECEIVED");
intent.putExtra("pdus", pdus);
intent.putExtra("format", "3gpp");

MyAndroidAppActivity.this.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");

非常感谢任何帮助或评论!

1 个答案:

答案 0 :(得分:0)

AOSP Messaging应用程序会忽略像您这样的Intents欺骗it requires that the sender hold the BROADCAST_SMS permissioncan only be held by firmware(或使用固件签名密钥签名的应用)。