在Mms源码AndroidMenifest中与sms接收相关的receiver:PrivilegedSmsReceiver和SmsReceiver,前者继承后者,接收广播后调用后者的onReceiveWithPrivilege()方法处理,而主要不同是申明了android.permission.BROADCAST_SMS,用来阻止SMS spoofing//关于SMS spoofing资料待查。
PrivilegedSmsReceiver接收android.provider.Telephony.SMS_RECEIVED。在SMSDispatcher,Handle中处理case:EVENT_NEW_SMS,其中函数dispatchMessage调用dispatchPdus发出OrderedBroadcast:SMS_RECEIVED,同时请求了一个足以让receiver去取得自己wake lock的wake lock,这里要说一下,在SmsMessage.createFromPdu()方法已经分析了message是cdma还是gsm,因此调用相应类的dispatchMessage函数。
回来继续分析PrivilegedSmsReceiver,接收到广播后,调用父类的onReceiveWithPrivilege()方法,并传递参数privileged=true,这里就进行了判断,对于没有permission的信息,直接ignore。
启动SmsReceiverService之前,用mStartingServiceSync同步请求了一个wake lock,在SmsReceiverService的handleMessage中release the wake lock.
关于SmsReceiverService,下面引一段前人的笔记:
.transaction.SmsReceiverService ,它被创建时首先 初始化了新的工作线程(HandlerThread对象)用来在后台完成相关动作,紧接着在onStartCommand方法里会将具体的任务通过消息(即调用service的Intent)发送给工作线程进行处理。根据 Intent.Action的名称,工作线程会处理4中情况:
A.系统启动完成后BOOT_COMPLETED:把发件箱(outbox)中的消息移动到发送队列(QueuedBox),然后开始发送队列中的消息,最后调用updateNewMessageIndicator方法更新状态栏消息指示图标;
B.处理Sms接收handleSmsReceived:从Intent中取得消息对象,直接显示给用户(Class0类型)或者保持到数据库中。
C.处理Sms发送handleSmsSent:从待发送消息队列中取得消息,并按次序逐个发送;
D.处理通讯网络状态改变handleServiceStateChanged:用户从无信号状态进入有信息号状态后,继续执行发送任务的情况。
handleSmsReceived调用insertMessage方法,其中:
1、sms.getProtocolIdentifier()=0x40,直接返回null,不做任何处理。
2、sms.getMessageClass() = CLASS_0,直接显示信息
3、sms.isReplace()=true,替换原来数据库里面的短信
4、如果以上情况都不是,直接保存到uri:content://sms/inbox
调用MessagingNotification.blockingUpdateNewMessageIndicator()用Notification或者toast的方式提醒用户接收到新信息。
分享到:
相关推荐
MMS(Multimedia Messaging Service)即多媒体信息服务,是一种在移动网络中发送和接收包含文本、图像、音频、视频等多媒体内容的消息服务。与传统的SMS短信相比,MMS提供了更为丰富的信息传递方式。 **1. MMS业务...
在Android系统中,RIL(Radio Interface Layer)是操作系统与无线网络...对于开发者来说,理解这一流程有助于排查短信接收相关的问题,尤其是在遇到用户反馈无法正常接收短信时,可以从这个流程入手进行诊断和修复。
短信接收,对于上层应用程序来讲就是要处理广播事件SMS_RECEIVED_ACTION,它是由Frameworks发出告诉上层有新的SMS已收到。在Mms中,是由PrivilegedSmsReceiver来处理,它收到SMS_RECEIVED_ACTION(android.provider....
Android MMS 彩信发送代码流程是 Android 操作系统中一个复杂的过程,涉及到多个应用层和系统服务的交互。下面将对该过程进行详细解释,从 Messaging 应用层到 framework 应用层的实现细节。 一、Messaging 应用层 ...
手机短信接收和发送是移动通信中的基础功能,它涉及到手机操作...总的来说,手机短信接收和发送涉及到操作系统、网络通信、数据编码、应用编程等多个领域的知识,理解这一过程对于开发相关应用或进行系统集成至关重要。
在IT行业中,短信接收是一项基础且重要的通信服务,尤其在移动应用、企业服务以及物联网(IoT)场景中广泛使用。"commswing短信接收"可能是指一个特定的短信接收解决方案或者服务,它可能由一个名为"commswing"的公司...
在Android 5.1版本中,开发MMS短信拦截功能是一项重要的任务,特别是对于提升用户体验和隐私保护而言。本文将深入探讨如何在Android 5.1源码基础上实现这一功能,以及如何添加和管理骚扰短信的黑名单。 首先,要...
短信(Short Message Service,SMS)是一种基于GSM、3G、4G等移动网络的技术,用于发送和接收简短的文本消息。其工作流程主要包括以下几个步骤: 1. **短信创建**:用户在手机上输入短信内容。 2. **短信编码**:...
短信(Short Message Service,简称SMS)是全球移动通信系统(Global System for Mobile communication,简称GSM)中的一项基本服务,它允许用户通过移动电话发送和接收简短的文字信息。随着技术的发展,短信服务...
在Android系统中,MMS(Multimedia Messaging Service,多媒体信息服务)是用于发送和接收包含文本、...通过深入学习MMS的发送和接收流程以及相关的API,开发者可以更好地利用这一功能,为用户提供更丰富的通信体验。
在Android平台上,MMS(Multimedia Messaging Service,多媒体信息服务)是一种用于发送和接收包含文本、图片、音频、视频等多媒体内容的短信服务。本压缩包"MMS.zip"中包含的资源,显然与Android系统下的MMS功能...
4. **寻址**: 和短信一样,接收方的MMS地址被解析,但这里需要知道接收方的MMS服务器地址。 5. **网络传输**: 彩信通过GPRS、3G、4G或5G等数据网络,发送到接收方的MMS服务器。 6. **接收方处理**: 接收方的MMS...
4. `NotificationHandler`:处理短信接收后的通知显示,如弹出通知或更新通知栏。 通过分析和学习这些源码,开发者不仅可以了解Android系统短信服务的基本工作流程,还能掌握如何在应用程序中集成短信功能,包括...
彩信接收流程涉及复杂的信令交互,其分析对理解网络性能及优化至关重要。以下是对彩信(1.0)与彩信(2.0)接收流程的深入解析。 ##### 1.1 彩信(1.0)接收信令流程分析 彩信(1.0)基于WSP/WTP协议,其接收流程...
MMS是短信服务的一个扩展,允许用户发送和接收包含文本、图片、音频和视频等多媒体内容的消息,而不仅仅是纯文本。MMS在2G、3G及4G网络中广泛使用,为用户提供了一种便捷的分享多媒体信息的方式。相比于短信,MMS...
二、短信接收流程 1. Android系统在接收到短信时,会触发广播`android.provider.Telephony.SMS_RECEIVED`。 2. 如果有注册监听此广播的BroadcastReceiver,系统会唤醒这些Receiver。 3. 在BroadcastReceiver的`...
7. **MMS接收流程** 当MMS消息到达时,Android 4.0.4系统会触发MmsService的回调,服务会调用Mms类的解析方法处理MMS数据,并将其存储到PduProvider中。用户可以通过系统提供的MMS应用或者其他支持MMS的应用查看...