android - 将 C2DM 发送到 SMS 收件箱

标签 android android-intent

我想将通过 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/

相关文章:

java - 如何从解析对象中获取数据?

android - 删除在我的情况下未放入堆栈的 fragment

android - 使用 Intent 在类之间传递数组

java - 如何解决无法识别的类问题?

android - 无法使用 ionic 项目创建 apk

java - Android 搜索 View 忽略 searchHintIcon - searchHintIcon 模糊

android - 如何正确使用 CyanogenMod 特定的 API

android - 何时使用应用程序 ID 或包名称(又名 PackageManager#getLaunchIntentForPackage 方法名称是否不正确?)

java - Intent 崩溃应用程序

android - 调用 startActivity 时在 onStop() 中查找下一个 Activity