Android2.3 短信接收 从 framework 到 MMS.apk 小记
2011-12-06 11:01
423 查看
在短信中 SMSDispatcher 是短信的核心部分。 提供发送SMS等操作接口,同时也提供接收SMS和返回报告等接口。被集成到GSMPhone 中。
接收方面:
SMSDispatcher 启动时,会注册一些回调接口。
mCm.setOnNewSMS(this, EVENT_NEW_SMS, null); //新短信
mCm.setOnSmsStatus(this, EVENT_NEW_SMS_STATUS_REPORT, null);
有信的消息上来的时候:
SMSDispatcher 的消息处理函数 handleMessage 处理 EVENT_NEW_SMS 消息,其主要由dispatchMessage完成。
dispatchMessage() 【GSMSmsDispatcher.java】
1.如果是简单的不需要分条接收的短信, 则通过dispatchPdus()完成,并发送广播给
MMS应用中的PrivilegedSmsReceiver.java中。
接收到广播后, 调用了beingstartService() 启动 SmsReceiverService.java.
之后完成短信接收 存储等功能。
2.如果是需要分条接收的短信, 则dispathcher会调用processMessagePart() 函数进行操作。
其子短信有一个头部,里面包含一个结构体:
收到子短信时,它会把短信暂时存储在一个mResolver, 等到收到了所有短信的时候,再将所有的短信取出拼接,而后删除暂存在mResolver 里面的子短信。 之后同样dispatchPdus() 调用,发送广播将pdus数据发送出去。
在启动了SmsReceiverService 之后, onStartCommand --> handleMessage -->handleSmsReceived。
在handleSmsReceived 中,通过getMessagesFromIntent(intent); (函数路径Telephony.java(frameworks\base\core\java\android\provider)) 对intent 中的pdu进行解析。获取到 相关信息, 及messageBody 信息内容。
SmsMessage[] msgs = Intents.getMessagesFromIntent(intent);然后insertMessage -->storeMessage; 结束。
接收方面:
SMSDispatcher 启动时,会注册一些回调接口。
mCm.setOnNewSMS(this, EVENT_NEW_SMS, null); //新短信
mCm.setOnSmsStatus(this, EVENT_NEW_SMS_STATUS_REPORT, null);
有信的消息上来的时候:
SMSDispatcher 的消息处理函数 handleMessage 处理 EVENT_NEW_SMS 消息,其主要由dispatchMessage完成。
dispatchMessage() 【GSMSmsDispatcher.java】
1.如果是简单的不需要分条接收的短信, 则通过dispatchPdus()完成,并发送广播给
MMS应用中的PrivilegedSmsReceiver.java中。
接收到广播后, 调用了beingstartService() 启动 SmsReceiverService.java.
之后完成短信接收 存储等功能。
2.如果是需要分条接收的短信, 则dispathcher会调用processMessagePart() 函数进行操作。
其子短信有一个头部,里面包含一个结构体:
public static class ConcatRef { public int refNumber; // 短信相关号1-255 相同的短信的子短信有相同的此号 public int seqNumber; // 短信编号 public int msgCount; // 分割成的得到短信条数 public boolean isEightBits; }
收到子短信时,它会把短信暂时存储在一个mResolver, 等到收到了所有短信的时候,再将所有的短信取出拼接,而后删除暂存在mResolver 里面的子短信。 之后同样dispatchPdus() 调用,发送广播将pdus数据发送出去。
在启动了SmsReceiverService 之后, onStartCommand --> handleMessage -->handleSmsReceived。
在handleSmsReceived 中,通过getMessagesFromIntent(intent); (函数路径Telephony.java(frameworks\base\core\java\android\provider)) 对intent 中的pdu进行解析。获取到 相关信息, 及messageBody 信息内容。
SmsMessage[] msgs = Intents.getMessagesFromIntent(intent);然后insertMessage -->storeMessage; 结束。
相关文章推荐
- Android Mms之短信接收流程--从Framework到App
- Android Mms之短信接收流程--从Framework到App
- Android 短信模块分析(四) MMS之短信的发送与接收
- Android 短信模块分析(五) MMS之彩信的发送与接收
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<1,接收短信>)
- android接收短信——framework处理流程(android 5.1)
- Android 短信模块分析(五) MMS之彩信的发送与接收
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<1,接收短信>)
- android中Mms学习笔记——短信(sms)接收流程(三)
- Android 短信模块分析(四) MMS之短信的发送与接收
- Android之发送短信和接收验证码
- 【Android】利用广播Broadcast接收SMS短信
- Android启动内置APK和动态发送接收自定义广播实例详解
- Android学习小Demo(19)利用Loader来实时接收短信
- Android第一课:Broadcast机制-接收短信
- android 发送短信的两种方式,以及接收报告和发送报告
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<2,下载彩信>)
- android apk使用framework中usb接口范例(应用RtkGps分析)
- Android从普通发送和接收短信到对短信进行拦截
- Android短信----接收流程---框架层(Frameworks)