`
yuanyao
  • 浏览: 147162 次
  • 性别: Icon_minigender_1
  • 来自: 就那小山沟
社区版块
存档分类
最新评论

Android Message Application -- SMS(一)

 
阅读更多

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
分享到:
评论

相关推荐

    Android代码-sms_gateway

    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 sms的发送以及接受

    在Android系统中,短信服务(SMS)是移动应用开发中不可或缺的一部分,允许用户发送和接收文本消息。本文将深入探讨如何在Android平台上实现短信的发送与接收功能。 首先,我们需要了解Android SMS服务的基础知识。...

    android 发送SMS消息、监视传入的SMS消息

    在Android平台上,发送SMS(短消息服务)和监控接收到的SMS消息是常见的功能,尤其在开发涉及到消息通信的应用时。以下将详细讲解如何实现这两个功能,并提供相关的代码示例。 **一、发送SMS消息** 1. **权限申请*...

    sms.zip_android_短信拦截

    这个"sms.zip"文件包含了一个实现短信拦截的小实例,它利用了Android的BroadcastReceiver机制。BroadcastReceiver是Android四大组件之一,用于监听系统或应用程序广播事件。下面将详细介绍如何在Android中实现短信...

    台湾高焕堂Android讲义

    5.认识Android Application.doc 7.Android里的类别继承及对象组合.doc 8.如何从DDMS发出简(短)讯给应用程序.doc 10.布局(Layout)在Android软件开发上的重要角色.doc 11.Android的类别继承与委托之范例.doc 12.认识...

    android 获取手机短信内容并及时刷新短信

    这个过程涉及到Android系统的SMS(Short Message Service)API以及监听短信变化的能力。下面将详细介绍如何实现这一功能。 首先,我们需要了解Android SMS API。在Android中,短信数据存储在SQLite数据库中的`sms`...

    高焕堂关于Android讲义

    5.认识Android Application 6. 7.Android里的类别继承及对象组合 8.如何从DDMS发出简(短)讯给应用程序 9. 10.布局(Layout)在Android软件开发上的重要角色 11.Android的类别继承与委托之范例 12.认识Android的...

    Android-转发所有短信到钉钉机器人或者邮箱

    本文将深入探讨如何利用`TranspondSms`项目来实现这个目标,该项目是一个开源解决方案,用于将Android手机上的短信转发至指定的钉钉机器人或邮箱。 首先,我们要理解Android系统中的短信监听机制。在Android API中...

    Android2.1消息应用(Messaging)源码学习笔记.pdf

    通常一个 Task 操作所涉及的内容不会超过 Application 边界,但在 Android 中却不是这样,Android 允许一个 Task 操作横跨多个 Application。 在 Messaging 应用中,有 7 个 Receiver 组件: 1. transaction....

    smstest.zip_brew sms_sms brew_smstest

    描述中的"A Brew Application for testing how to send an sms message."进一步证实了这个应用的主要用途——它是用来测试SMS(Short Message Service,短信服务)功能的。在移动开发中,尤其是对于非Android或iOS...

    Android快速SDK(21)免费短信验证码库MobSms【肌肉记忆,分钟接入】

    MobSms是一款专门为Android平台设计的免费短信验证码SDK,它提供了简单易用的API接口,使得开发者能够快速地在应用中集成发送和接收短信验证码的功能。这个库不仅降低了开发成本,还大大提升了应用的上线速度。 ...

    Android广播组件实践——短信黑名单简单实现

    在Android系统中,广播组件(BroadcastReceiver)是四大组件之一,它用于接收并响应系统或应用发布的广播消息。本实践将详细介绍如何利用Android广播组件来实现一个简单的短信黑名单功能。 首先,我们需要创建一个...

    android mms

    MMS是SMS(Short Message Service,短消息服务)的一个扩展,允许用户通过手机进行更加丰富的信息交流。 **1. MMS架构** Android中的MMS服务主要由以下组件构成: - **MMS应用**:这是用户与MMS交互的界面,如默认...

    android add wap push添加wap push功能

    <data android:mimeType="application/vnd.wap.mms-message" /> </intent-filter> ``` 2. **处理WAP Push消息**:在`onReceive()`方法中,你可以通过`Intent`的`getData()`方法获取到Push消息的数据。接着,解析...

    短信收发工具

    一、Android SMS API介绍 Android系统提供了SmsManager类,它是处理短信操作的核心API,支持发送、接收和查询短信。SmsManager是系统服务,可以通过Context.getSystemService()方法获取。 二、短信发送 1. 获取...

    【Android】短信信息实时获取

    在Android平台上,短信信息的实时获取是移动应用开发中的一个重要功能,尤其对于那些需要监控、管理或者基于短信进行交互的应用来说。本篇文章将深入探讨如何在Android系统中实现短信的实时获取。 首先,我们需要...

    android面试题

    - **标准SMS**:一条SMS消息最多可包含140字节的数据。 #### 34. 调整图片像素点的透明度算法 ```java public void adjustTransparency(int[] data, int width, int height) { for (int i = 0; i ; i++) { if (...

    android4.1 短消息模块源码 Mms.rar

    Android的MMS服务基于PDU(Protocol Data Unit)模型,分为SMSC(Short Message Service Center)和WAP(Wireless Application Protocol)两部分。SMSC处理文本短信,而WAP负责多媒体数据传输。MMS服务通过MMSToWAP...

    Android面试题及答案

    每一个 Android 应用程序都在它自己的进程中运行,拥有一个独立的 Dalvik 虚拟机实例,而每一个 DVM 都是在 Linux 中的一个进程。 3. SIM 卡的 EF 文件 SIM 卡的 EF 文件用于存储并和手机通讯用的数据,SIM 卡本身...

Global site tag (gtag.js) - Google Analytics