我想将通过 C2DM 收到的消息发送到手机的 SMS 收件箱,并得出结论,这可能是通过让 Android 认为 C2DM 是真正的 SMS 并让它发挥其魔力来实现的。
我已经追踪了相当多的 Android 源代码,在 SMS_RECEIVED Intent 被触发之前,手机堆栈中没有发生任何值得注意的事情,这让我相信最简单的方法是从创建一个 PDU c2DM 有效载荷并触发 SMS_RECEIVED Intent ,理论上应该会导致标准 SMS 应用程序使用它并将其写入 SMS 收件箱。
下面的代码 fragment 是一个概念证明——我硬编码了一个 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");
如有任何帮助或意见,我们将不胜感激!
最佳答案
AOSP 消息传递应用会忽略像您一样的欺骗性 Intents
,如 it requires that the sender hold the BROADCAST_SMS
permission ,这can only be held by firmware (或使用固件签名 key 签名的应用程序)。
关于android - 将 C2DM 发送到 SMS 收件箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403847/