【问题标题】:receive sms sent to a particular port接收发送到特定端口的短信
【发布时间】:2012-09-25 16:29:29
【问题描述】:

这是一个反复出现的问题,但我无法找到关于此主题的足够完整的文档。

当使用 kannel 或其他设备使用默认参数发送 SMS 时,我已经有一个能够拦截 SMS 的工作应用程序。我的清单如下所示:

<receiver
    android:name=".sms.SMSListener"
    android:enabled="true" >
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />    
    </intent-filter>
</receiver>

它适用于android.provider.Telephony.SMS_RECEIVEDandroid.intent.action.DATA_SMS_RECEIVED

但对于我的应用程序而言,SMS 不得出现在用户收件箱中。为此,kannel 将 SMS 发送到特定端口。它已经在黑莓上运行,所以我猜问题的发送部分已经在运行。 也有可能通过其他方式实现这个目标,我需要实施这个解决方案才能与其他类似项目保持一致。另一个原因是避免我的BroadcastReceiver 在收到每条短信时被触发(因此需要解析每条收到的短信)。

但是,对于我当前的清单,我没有收到发送到特定端口的 SMS(我的接收器根本没有被触发)。经过一番研究,我发现了这些主题how to receive text sms to specific port..How to send and receive data SMS messages。 有人说添加:

<data android:scheme="sms" />
<data android:port="1234" />

足以工作(不幸的是,它对我不起作用)。但是根据文档(http://developer.android.com/guide/topics/manifest/data-element.html),您需要指定android:scheme,然后指定android:host,以便考虑android:port。据我了解文档,您可以指定 android:scheme 并且意图过滤器应该仍然有效。 但是,一旦我指定android:scheme,我的BroadcastReceiver 就会停止工作,无论我是否使用特定端口发送短信:

<receiver
    android:name=".sms.SMSListener"
    android:enabled="true" >
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />    
        <data android:scheme="sms" />
    </intent-filter>
</receiver>

所以我的问题如下:

  1. 是否有关于android:scheme 可以取哪个值的文档?
  2. android:host 应该使用哪个值?
  3. 是否有某个应用程序可以监听每个端口的 SMS,以便我可以确定测试 SMS 已正确发送(只是为了仔细检查这部分)?

【问题讨论】:

  • 如果你想要端口寻址消息,那么你需要使用 android.intent.action.DATA_SMS_RECEIVED 而不是 android.provider.Telephony.SMS_RECEIVED。您提到的其中一个链接也有正确的使用方法
  • 是的,没错,但它也不适用于 DATA_SMS_RECEIVED...

标签: android sms broadcastreceiver android-manifest intentfilter


【解决方案1】:

我终于明白出了什么问题:

我正在将我的数据短信发送到为 WAP-PUSH 消息保留的端口 2948。 所以 android 不会将这些消息广播到我的 android.intent.action.DATA_SMS_RECEIVED 接收器。使用不同的端口解决了这个问题。

此外,android 似乎对 8 位编码的 SMS 有问题(至少它会在日志中发出警告。)。不过我的主要问题已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多