`

Android SMS 数据库

阅读更多
$ adb shell
$ cd data/data
$ cd com.android.providers.telephony
$ cd databases
$ sqlite3 mmssms.db
sqlite> .tables
addr                 pdu                  threads           
android_metadata     pending_msgs         words             
attachments          rate                 words_content     
canonical_addresses  raw                  words_segdir      
drm                  sms                  words_segments    
part                 sr_pending  

会发现mmssms一共17个表

数据库中sms相关的字段如下:   

_id          primary key     integer      与words表内的source_id关联
thread_id     会话id,一个联系人的会话一个id,与threads表内的_id关联      integer
address                 对方号码          text
person                  联系人id           integer            
date                      发件日期           integer
protocol               通信协议,判断是短信还是彩信     integer       0:SMS_RPOTO, 1:MMS_PROTO
read        是否阅读   integer   default 0      0:未读, 1:已读 
status     状态  integer  default-1 
                                                  -1:接收,  
                                                  0:complete, 
                                                  64: pending,                                                             
                                                  128: failed                                                           
                                                                                                                    
type                     短信类型           integer       
                                           1: inbox 
                                           2: sent  
                                           3: draft56
                                           4: outbox                      
                                           5:failed
                                           6:queued                                                                                                                 
                                                                                                                                                 
                                                                                                              
body                      内容
service_center      服务中心号码
subject                  主题
reply_path_present
locked
error_code
seen


具体使用方法:

Cursor cursor = mContentResolver.query(Uri.parse("content://sms"), String[] projection, String selection, String[] selectionArgs, String sortOrder);

if(cursor!=null)
if(cursor.moveToFirst())
   {String address = cursor .getString(draftCursor.getColumnIndexOrThrow("address"));}


query转义sql语句时将query函数中的参数转义为
select projection[] from sms where selection[] = selectionArgs[] order by sortOrder

由于Android2.2 Messaging中存储草稿短信时不会将address存入sms表中,而以thread_id为索引,将草稿短信的address存入canonical_addresses表中而导致仅根据协议无法查询到draft msgs address(这种设计缺陷是因为Android为了使UI更加效率而使draft msgs不同于其他类型的msgs存储方式所导致的),那么根据这样的转义方式我们可以扩展一下这种select语句使他可以查询到sms表以外的东西:

Cursor draftCursor = mResolver.query(Uri.parse("content://sms"),
                new String[] {"canonical_addresses.address " +
                        "from sms,threads,canonical_addresses " +
                        "where sms.thread_id=threads._id and threads.recipient_ids=canonical_addresses._id and sms._id ='" +
                        String.valueOf(target_message_id) + "' --"},
                null, null, null);

用到了sql语句中注释符号“--”
分享到:
评论

相关推荐

    sms.zip_Android 数据库_android_android sms_sms

    标题中的“sms.zip_Android 数据库_android_android sms_sms”暗示了这是一个关于Android短信功能的SQLite数据库开发相关的资源包。下面将详细介绍这个主题中的关键知识点。 1. **SQLite数据库**:SQLite是Android...

    Sms.rar_MMS_android sms_android 短信_sms_sms android

    这个名为"Sms.rar"的压缩包包含了一个关于Android SMS(Short Message Service)功能的源码实现,特别提到了MMS(Multimedia Messaging Service)的支持,这允许发送和接收包含多媒体内容的消息。下面将详细解释这些...

    SMS.zip_android_android sms_sms

    标题中的“SMS.zip_android_android sms_sms”表明这是一个与Android操作系统中的短信功能相关的压缩包,包含的是与接收和处理短信有关的代码或资源。在Android系统中,短信服务(SMS)是移动设备通信的一个核心部分...

    android写sms,calllog数据库

    接下来,我们来讲解如何向SMS数据库插入数据。在Android中,短信数据存储在`content://sms/`这个ContentProvider中。要插入一条新的短信,可以创建一个 ContentValues 对象并填充必要的字段,如`body`(短信内容)、...

    android 监听短信数据库

    在Android开发中,监听短信数据库的变化是一项常见的需求,尤其是在实现如短信自动回复、短信通知等功能时。通过监听短信数据库,开发者可以实时获取到用户手机上接收到的新短信或已有的短信变化,从而进行相应的...

    Android短信数据库基础(开发资料)

    本文将深入探讨如何在Android开发中操作短信数据库,主要包括三个关键表:Canonical_addresses、Threads和Sms,以及如何利用这些表来读取短信、短信会话列表和特定联系人的短信。 1. **短信数据库路径** Android...

    SMS_Android.rar_android_android sms

    【标题】"SMS_Android.rar" 是一个针对 Android 平台的 SMS(Short Message Service,短信)收发程序。这个项目对于那些希望在自己的 Android 应用中集成短信功能的开发者来说,是一个非常实用的资源。 【描述】该...

    SMS.rar_android_android sms_android 短信_短信拦截

    在Android 6.0(API级别23)及以上版本,需要在运行时请求READ_SMS和WRITE_SMS权限,否则应用无法读取或写入短信。在Manifest.xml中声明权限的同时,需要在代码中使用RequestPermissions()方法请求用户授权。 六、...

    Sms.zip_android sms_android 短信_sms_安卓_安卓短信拦截

    而“Sms.zip”这个压缩包文件可能包含了关于Android短信拦截和转发的实现代码或者资源。接下来,我们将深入探讨Android短信服务,特别是如何实现拦截和转发机制。 1. **Android SMS服务**:Android提供了一个名为`...

    Android开源数据库框架LitePal的应用分析.pdf

    Android的应用程序层包括系统自带的一些关键性应用程序,如SMS客户端和E-mail客户端等。这些应用程序的顺利运行依赖于Java语言的编写。由于Android的开源特性,它得到了众多开发者的认可,并在3G业务发展过程中被...

    SMS.rar_android_android 收发 短信_android 服务_android 短信_sms

    Android系统维护了一个名为`sms`的数据库表,存储所有短信信息。开发者可以使用ContentResolver和Uri(如`Uri.parse("content://sms/inbox")`)来查询、插入、更新或删除短信。 四、权限管理 在AndroidManifest....

    android系统常用数据库

    - 短信数据库:保存短信记录,通常位于/data/data/com.android.providers.telephony/databases/mmssms.db,可以通过SmsManager类进行操作。 - 多媒体数据库:MediaStore类提供了对音频、视频、图片等多媒体文件的...

    Android Sms BackUp工程源码

    现在Android非常火的对短信备份还原的应用SmsBackUp,是一个学习如何对Android数据库操作,短信操作,邮件操作的经典范例,用它可以非常轻松的将你的Android短信备份到Gmail或者SDCard上面,用7zip进行解压

    Android SMS

    4. **Content Provider**:Android系统的短信数据存储在一个SQLite数据库中,可以通过`ContentResolver`和`Uri`来访问。`content://sms/`是短信Content Provider的URI,可以用来查询、插入、更新和删除短信记录。 5...

    gdata-samples.java-1.46.0.zip_android smsbackup pu

    【标题】"gdata-samples.java-1.46.0.zip_android smsbackup pu" 提供的是一个Android应用的源代码,主要功能是SMS备份。这个应用可能使用了Google Data API(gdata)的一个特定版本1.46.0,用于数据备份和恢复,...

    Android SMS 短信内容显示在一个 泡泡 形状的窗口中.7z

    开发者需要在AndroidManifest.xml中申请READ_SMS权限,以便读取短信数据库。然后,可以通过ContentResolver查询SMS Provider来获取短信数据。一旦获取到短信,就可以将内容填充到我们之前创建的泡泡视图中。 为了在...

    android 访问SMS收件箱

    总结,访问Android SMS收件箱涉及到的内容包括理解Android的内容提供者机制、请求和处理权限,以及如何进行数据库查询。通过上述步骤,开发者能够构建起读取并处理短信的程序。对于初学者来说,这是一个很好的起点,...

    sqlitedb sms.db

    2. SMS数据库的组织:在Android系统中,短信数据通常存储在SQLite数据库中,"sms.db"可能是其中一个例子。 3. 数据库浏览工具的使用:"SQLite Database Browser.exe"提供了一个方便的界面来查看和操作SQLite数据库...

    Android SMS 短信内容显示在一个 泡泡 形状的窗口中.zip

    接着,为了显示短信内容,我们需要访问Android的SMS Provider,这是一个SQLite数据库,存储着所有短信数据。通过ContentResolver和Uri类,我们可以查询短信表,获取特定的短信条目。例如,使用`Uri.parse("content:/...

Global site tag (gtag.js) - Google Analytics