静默短信检测Android

6

我正在尝试通过Android API检测静默短信是否存在。还有,你可以从设备发送一条吗?


1
你的研究目前有什么进展了吗? - 19greg96
1
这取决于你所说的“静默短信”的含义。你是指当短信被发送或接收时,用户不会收到通知,也永远看不到这条消息吗? - Michael Hampton
我已经花了大约半个小时的时间,找到了一个地方说这是可能的,但我还没有找到任何地方证实。没有太多其他有用的信息,主要只是理论。在这种意义上的“静默”:http://en.wikipedia.org/wiki/Short_Message_Service#Silent_SMS - nwnoga
4个回答

3

无声短信可能由手机运营商(或潜在的入侵者)发起,通过将TP DCS(数据编码方案)字段的位4-7设置为1100(消息等待指示组:丢弃消息)-参见此文章,但据我所知,这在Android SDK中没有反映出来。
Class 0与无声短信无关。
3GPP 23.038实际上说:“当移动终端消息为类0并且MS具有显示短消息的能力时,MS应立即显示该消息并向SC发送确认”。


2

好的,我想我找到了解决方法。在telephony.SmsMessage类中有一个叫做getMessageClass()的方法。类0表示静默短信。至于发送这些短信,仍然是一个正在进行中的工作。


1
根据SMS wiki的描述,0级短信被称为“闪信”,不会静默接收,而是直接显示在屏幕上,并且不会被保存。 - L3viathan

0

如果您正在测试应用程序...

那么我建议使用短信模拟器工具。

在Windows机器上 -

  1. 进入CMD
  2. 输入 - “telnet localhost 5554”(假设这是唯一活动的模拟器;如果您有更多模拟器,请输入相应的端口号)
  3. 使用SMS功能(还有更多选项,如GSM呼叫等)

您还可以在telnet会话中键入help,它将列出您可以执行的所有可能操作。


0

Android SDK支持数据短信,作为一般短信接收广播接收器功能的子集:

<uses-permission android:name="android.permission.RECEIVE_SMS" ></uses-permission>

您需要指定一个意图过滤器,并监听与静默短信匹配的特定端口:

 <intent-filter android:priority="10" >
            <action android:name="android.intent.action.DATA_SMS_RECEIVED" />
            <data android:scheme="sms" />
            <data android:port="16001" />
        </intent-filter>

Reference: https://developer.android.com/reference/android/provider/Telephony.Sms.Intents#DATA_SMS_RECEIVED_ACTION


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接