【问题标题】:Is it possible to fake an incoming SMS on Android?是否可以在 Android 上伪造传入的短信?
【发布时间】:2012-08-14 09:37:07
【问题描述】:

在某种情况下,我希望我的应用能够“伪造”用户设备上的传入短信,作为一种通知。当我通常使用 Twilio 向我的用户发送文本但我知道他们已经拥有我的应用程序时,这会节省我的钱。有没有办法做到这一点?我想这与意图和内容提供者有关,但我真的不知道从哪里开始。

澄清: 我对 Android 并不陌生,我尊重所有正常的通知方法。但是,我的应用程序可以选择接收短信,我希望能够免费触发它们而不是付费。这仅用于 SMS 特定用途,不能替代普通通知。

【问题讨论】:

  • 作为一种通知”类似于 iPhone 上的推送通知?
  • 如果您的目标是让您的应用显示通知,请显示Notification。如果您的目标是让您的服务器在您的应用中触发行为,请使用 Google Cloud Messaging。

标签: android android-intent sms android-contentprovider


【解决方案1】:

是的(尽管我真的不支持这样做),理论上可以通过创建和广播正确的意图来实现。具体来说,他们android.provider.Telephony.SMS_RECEIVED 意图将被任何正在收听 SMS 消息的人接收,包括默认的 SMS 应用程序。这将反过来导致显示通知。

综上所述,我只在系统进程内的自定义版本的 Android 中完成过此操作。我真的不确定通用应用程序是否可以做到这一点(事实上,我有点怀疑)。另一个需要注意的是,您需要将数据表示为 PDU,它代表 SMS 消息的二进制数据格式。你可以查一下,但这很重要。

更好的方法是让您的应用程序在托盘中显示一个通知,就像表现良好的应用程序应该通知用户事件一样。看看Notification 类。

【讨论】:

  • blog.dev001.net/post/14085892020/… 你在正确的轨道上,上面的链接详细显示了如何做到这一点。对于稍后阅读此问题的人,请注意您将需要 BROADCAST_SMS 权限。
【解决方案2】:

如果您安装名为 ApiDemos-debug.apk 的 apk,通常随您选择的 SDK 平台一起安装,您将在

中找到示例
<Api Demos> > App > Notification > IncomingMessage

这个包的完整源码通常在下面

<SDK root>/samples/android-xx/ApiDemos

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2011-12-15
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多