SMS send:
ComposeMessageActivity
(信息编辑
View
)
1. confirmSendMessageIfNeeded
->
是否收信人编辑
View
是否存在并已经显示
2. sendMessage
->
判断是否为紧急模式,
true
:显示
notice
false
:收信人数据处理
WorkingMessage
1.send
->
收件人数据处理
2. preSendSmsWorker
->
删除草稿箱的数据
3. sendSmsWorker
->
格式化联系人数据,确保
SMS
没有超过最大数据极限
SmsMessageSender
1. sendMessage
2. queueMessage
->
判断是否需要发送报告;将收件人及信息存入发送队列,发送
ACTION_SEND_MESSAGE
广播,通知
SmsReceiver
去发送消息
SmsReceiver
1. onReceiveWithPrivilege
2. beginStartingService
->
开启
SmsReceiverService
SmsReceiverService
1. ServiceHandler
->
处理传入的请求
2. handleSendMessage
->
处理
SMS
发送函数,假如没有信息在发送,调用
sendFirstQueuedMessage
3. sendFirstQueuedMessage
->
从队列数据中读取要发送的信息数据,调用
SmsSingleRecipientSender
的
sendMessage
函数发送信息,
SmsSingleRecipientSender
1. sendMessage
->
切割信息,将信息移动到以发送库中,调用
framework
接口发送信息
Framework
发送信息后,
SmsReceiver
接受包含
result
code
数据的广播,交给
SmsReceiverService
根据不同的
result code
做相应的操作:
1.假如发送成功,将信息设置为发送成功,查看是否还有需要发送的信息,如果有,调用
sendFirstQueuedMessage
继续发送
;
2.当无服务
&radio off
时,将信息移动到发送队列,注册
ServiceState
监听器,当状态变化,
ap
尝试重发信息;
3.当
FDN
启动时,只能向固定拨号号码发送信息;
4.其他情况将信息设置为发送失败,查看队列是否有需要发送的下一条消息
前面提到,
ap
发送处理过程中,总是将信息移来移去的,什么含义呢?让我们来从
SMS
的
DB
说起,
SMS
的数据是存放在数据库当中的
(/data/data/com.android.providers.telephony /mmssms.db),DB
中的
sms
表存储的就是短信的数据,包括回话
ID
(
thread_id
),地址(
address
)
,
类型(
type
)
,
内容(
body
)等数据字段;这里讲到的移来移去其实就是设置
type
这个字段,
type
字段有
7
个值代表不同的意思,分别是
0
(所有信息),
1
(收信夹),
2
(发信夹),
3
(草稿),
4
(已发送),
5
(发送失败),
6
(发送队列)
;
===========================================================================
SMS Receive:
当接收到
SMS
的时候,
framework
发出
SMS_RECEIVED_ACTION
广播,
SmsReceiver
接收到广播,开启
SmsReceiverService
,
SmsReceiverService
调用
handleSmsReceived
函数处理接收到的信息:从
intent
中获取出
SmsMessage,
将
SMS
数据保存到
DB
中,然后通知
User
- 大小: 60.2 KB
- 大小: 24.3 KB
分享到:
相关推荐
react-native-android-sms-listener 一个实用程序,使您可以侦听传入的SMS消息。 例 import SmsListener from 'react-native-android-sms-listener' SmsListener . addListener ( message => { console . info ( ...
Laravel开发-laravel-sms-message-api 給米瑟奇發送簡用
Laravel开发-laravel-sms-message-api .zip
android-async-http-1.4.9.jar是一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个...所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息
使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息
使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息
安卓开发中经常使用到的一个框架,使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message ...
DB2报错:SQL10007N Message "-1390" could not be retrieved. Reason code
This is a simple android 2.0 application that allows one to use their android-based phone as a simplistic SMS gateway to the web. Operation After installation, open the application and set the server ...
android-postfix-plugin Android postfix plugin for AndroidStudio Available templates: Postfix Expression Description Example .toast Create and show Toast. Toast.makeText(context, expr, ...
Android Handler详解-中国移动开发者社区 Android Handler详解-中国移动开发者社区
yii2-message-sms 短信网关发送,包含云片,云通讯,云信 默认发送网关是云片,如果短信网关因为网关限制(以下)发送失败,则换下一个网关去发送 云片返回规则: 17 : 24小时内同一手机号发送次数超过限制 9 : 同一...
wap-251-pushmessage-20010322-a.pdf
VoIP.ms SMS ...VoIP.ms SMS Message Center is clearly built as a diagnostic tool for use in desktop browsers, not as an easy way to send and receive messages on a mobile device. VoIP
1.5 专题讨论:定义并撰写第一个HAL Stub 2.HAL Development 2.1 HAL Stub Analysis and Design (OOAD) 2.2 HAL Stub Class 2.3 HAL Stub Interface 2.4 专题讨论:开发 LED 的 HAL 模组 3.Android API Design ...
android-sms-message一个简单的短信接受、转发器
详细描述了Android的消息处理机制,Message和MessageQueue类的详解
解决 protobuf-gen-lua 跨文件引用message,直接覆盖这个文件,重新生成lua文件,就能解析到跨文件引用的message
Android app for remotely controlling a phone through sms messages. Install the app on a device, which should be controlled, and send control commands from any messenger to it. compatible android ...
Java源码,,Android编程实现手机在需要时自动发送短信