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

Android Long SMS

 
阅读更多

Android Long SMS

 

SEND:

 

ap在发送long sms之前,会调用Framework的SmsManager的divideMessage()函数,将信息进行切分,然后sendMultipartTextMessage()判断是否为long sms,如果是调用sendMultipartText,以long sms的方式发送出去,否则为generic sms

 

 

RECEIVE:

 

接收到long sms的时候,SMSDispatcher会检查sms是否有header & header.ConcatRef,如果存在,则为long sms的part,交给processMessagePart函数去处理

 

processMessagePart函数的处理流程:

1.根据long sms的reference_number & address query出和当前part相关的part信息(From raw table)

2.比对信息数量,看是否已经接收到了所有的parts

2.1如果没接收到所有的parts,将当前的part存储到DB

2.2如果接收到所有的parts,取出所有相关parts的相关数据进行拼接,然后从DB中删除所有相关的parts,发送广播

 

 

PS:long sms的parts存在DB中的raw表中
    假如一条long sms被切分为两条parts,我们的device只接收到其中的一条part,由于generic sms的数据存储在sms表中,raw表中的残余part不会对generic sms造成影响,所有不做任何操作(保不齐哪天那条丢失的part神奇般的又出现了)

分享到:
评论

相关推荐

    Android send SMS and save SMS

    在Android平台上,发送短信和保存短信记录是两个重要的功能,它们涉及到系统级别的权限以及与SMS相关的API交互。本文将深入探讨这两个主题,并提供相应的代码示例。 ### 1. Android发送短信 在Android中,发送短信...

    android 访问SMS收件箱

    long time = cursor.getLong(cursor.getColumnIndex(Telephony.Sms.DATE)); String body = cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY)); // 打印或处理短信信息 Log.d("SMS", "Address: " + ...

    sms_onReceive_liu.zip_android_android 短信

    这个名为"sms_onReceive_liu.zip"的压缩包文件包含了一个与Android短信接收相关的Java源代码文件——"sms_onReceive_liu.java"。这个类主要用于监听并处理接收到的短信事件。 首先,我们要理解在Android中如何处理...

    Android代码-sms2blog-mobile-server

    This project aims to eventually replace a project I did a LONG time ago called letmeparty....I didn't think it would have many uses beyond people traveling in internet-handicapped places but was ...

    Android获取手机短信

    在Android中,短信通常存储在SQLite数据库中的"SMS"表内,包括收件箱(INBOX)、发件箱(OUTBOX)、草稿箱(DRAFTS)等类别。每条短信都有其特定的ID、类型、地址、时间戳、内容等字段。 1. **权限设置**: 在...

    【Android】短信应用——短信实时删除

    不过,需要注意的是,由于安全性和隐私政策的考虑,Android在4.4版本之后引入了权限管理,即使应用拥有`READ_SMS`和`WRITE_SMS`权限,也可能无法在第三方应用中删除短信,除非用户将该应用设置为默认的短信应用。...

    (android studio)安卓实验查看系统短信

    <uses-permission android:name="android.permission.READ_SMS" /> ``` 然后,我们需要创建一个Activity或者Fragment来执行实际的短信读取操作。这里通常会有一个按钮,点击后触发读取短信的逻辑。我们可以通过...

    读取android手机内所有短信

    long timestamp = cursor.getLong(cursor.getColumnIndex(Telephony.Sms.DATE)); String body = cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY)); // 处理短信数据... } while (cursor.moveToNext...

    android 接收短信加上了已读的处理

    <action android:name="android.provider.Telephony.SMS_RECEIVED" /> ``` 在Activity的`onCreate()`方法中注册BroadcastReceiver: ```java SmsReceiver smsReceiver = new SmsReceiver(); registerReceiver...

    android 获取手机电话号码短信内容

    <uses-permission android:name="android.permission.READ_SMS" /> ``` 接着,通过`ContentResolver`查询短信表: ```java Uri smsURI = Uri.parse("content://sms/inbox"); // 获取收件箱中的短信 ...

    \Android删除短信的处理

    根据提供的文件信息,我们可以总结出以下关于Android删除短信处理的相关知识点: ### 一、获取待删除短信线程ID 在Android应用中,如果需要删除某条或多条短信,首先需要获取到这些短信所在的线程ID。这是因为...

    android备份系统的短信

    long timestamp = cursor.getLong(cursor.getColumnIndex("date")); // 处理其他字段... } ``` 接下来,我们需要将获取到的短信数据序列化到本地,以便备份。序列化是一种将对象转换为字节流的过程,以便能够存储...

    Android: 读取短信

    <uses-permission android:name="android.permission.READ_SMS" /> ``` 2. 在运行时请求权限: ```java if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION...

    【Android】短信信息实时获取

    long timestamp = cursor.getLong(cursor.getColumnIndex(Telephony.Sms.DATE)); // 处理每条短信的信息... } ``` 四、监听新短信 如果需要实时获取新收到的短信,可以注册一个BroadcastReceiver来监听`android....

    Android编程之SMS读取短信并保存到SQLite的方法

    综上所述,Android编程中读取SMS短信并保存到SQLite数据库的过程主要包括:获取短信内容提供者的Uri、查询短信数据、创建SQLite数据库、插入短信到数据库以及从数据库中查询并显示短信。这个过程展示了Android对...

    android 获取短信和通话记录信息

    <uses-permission android:name="android.permission.READ_SMS" /> ``` 如果需要写入短信,还需要: ```xml <uses-permission android:name="android.permission.WRITE_SMS" /> ``` 2. 查询短信: 短信存储在`...

    【Android】短信应用——短信(会话)实时删除

    <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> ``` 接下来,我们需要访问短信数据库。Android系统提供了ContentResolver和...

    【Android】短信应用——短信(会话)实时删除

    在Android中,短信数据存储在SQLite数据库中,主要涉及到两个表:`sms` 和 `thread`。`sms` 表存储单条短信信息,包括短信内容、发送者/接收者、时间等信息;`thread` 表则记录了短信会话,它通过`thread_id`字段...

    android短信分享

    Toast.makeText(context, "没有安装可响应的应用", Toast.LENGTH_LONG).show(); } } ``` #### 解析代码 1. **构造URI**:通过`Uri.parse("smsto:" + receiverNumber)`构建一个包含接收者电话号码的URI。 2. **...

Global site tag (gtag.js) - Google Analytics