我想将通过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");
非常感谢任何帮助或评论!
答案 0 :(得分:0)
AOSP Messaging应用程序会忽略像您这样的Intents
欺骗it requires that the sender hold the BROADCAST_SMS
permission,can only be held by firmware(或使用固件签名密钥签名的应用)。