`
_小菜鸟
  • 浏览: 34089 次
社区版块
存档分类
最新评论

Android下查询系统源码看短信的显示

阅读更多

查询系统源码看短信的显示如何写:

providers.telephony:SmsProvider:

 

1.确定怎么查数据库中的表:

Uri = content://sms/conversations

 

 

 

2.确定查询语句: select  映射条目 from 表  where 查询条件

 

 

:

sms, (SELECT thread_id AS group_thread_id, MAX(date)AS group_date,COUNT(*) AS msg_count FROM sms GROUP BY thread_id) AS groups

查询条件:

sms.thread_id = groups.group_thread_id AND sms.date = groups.group_date

映射条目:

sms.body AS snippet 

 sms.thread_id AS thread_id 

 groups.msg_count AS msg_count

 

 

所以查询语句:

 

select 

 sms.body AS snippet,sms.thread_id AS thread_id,groups.msg_count AS msg_count

from 

  sms, (SELECT thread_id AS group_thread_id, MAX(date)AS group_date,COUNT(*) AS msg_count FROM sms GROUP BY thread_id) AS groups

where

 sms.thread_id = groups.group_thread_id AND sms.date = groups.group_date

 

查询结果:

 

 

 

 

还需要号码,日期/时间

但看系统源码的映射列都已经写死,用户若添加自己需要的列会将系统的列覆盖:

看系统如何解决:query:

这里的query是用户来调用的,所以projectionIn是用户传进来的,

 

继续找:同一个方法内,query怎么处理projictionIn,

 

点击查看如何处理用户传进来的projectionIn,

 

 

 再次点击发现进不去,为本类的方法:查找:

 

第一个在判断里面,略去不看,看第二个:projection等各种参数建立成为一个sql语句,点击,发现进不去,,buildQuery为一个本类方法:查找其实现:

 

 

点击发现是一个本类方法,查找其实现:

 

分析源码:

 

将需要添加的列写好,测试正确性:

select sms.body AS snippet,sms.thread_id AS thread_id,groups.msg_count AS msg_count,sms.address as address,sms.date as date

from  sms, (SELECT thread_id AS group_thread_id, MAX(date)AS group_date,COUNT(*) AS msg_count FROM sms GROUP BY thread_id) AS groups

where sms.thread_id = groups.group_thread_id AND sms.date = groups.group_date

 

 

 

 详细代码:

 

1.

  1. package com.itcode.SMSManager.utils;  
  2.   
  3. import android.net.Uri;  
  4.   
  5. public class SmsUtils {  
  6.   
  7.  public static final Uri SMSURL = Uri.parse("content://sms/conversations");  
  8. }  


2.

  1. package com.itcode.SMSManager;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.AsyncQueryHandler;  
  5. import android.content.ContentResolver;  
  6. import android.database.Cursor;  
  7. import android.os.Bundle;  
  8. import android.util.Log;  
  9.   
  10. import com.itcode.SMSManager.utils.SmsUtils;  
  11.   
  12. public class ConversationActivity extends Activity {  
  13.   
  14.     private ConversationAsyncQueryHandler asyncQuery;  
  15.     private static final String[] CONVERSATIONSMSPROJECTION = {  
  16.             "sms.body AS snippet""sms.thread_id AS thread_id",  
  17.             "groups.msg_count AS msg_count""sms.address as address",  
  18.             "sms.date as date" };  
  19.     public static final String TAG = "ConversationActivity";  
  20.   
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         // TODO Auto-generated method stub  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.activity_conversion);  
  26.   
  27.         asyncQuery = new ConversationAsyncQueryHandler(getContentResolver());  
  28.         asyncQuery.startQuery(0null, SmsUtils.SMSURL,  
  29.                 CONVERSATIONSMSPROJECTION, nullnull"date DESC");  
  30.   
  31.     }  
  32.   
  33.     private class ConversationAsyncQueryHandler extends AsyncQueryHandler {  
  34.   
  35.         private String value;  
  36.         private String  columnName;  
  37.   
  38.         public ConversationAsyncQueryHandler(ContentResolver cr) {  
  39.             super(cr);  
  40.             // TODO Auto-generated constructor stub  
  41.         }  
  42.   
  43.         /** 
  44.          * 当异步查询结束后调用的方法 
  45.          * Called when an asynchronous query is completed. 
  46.          * token the token to identify the query, passed in from startQuery. 
  47.          * cookie 添加额外的数据的 the cookie object passed in from startQuery. 
  48.          * cursor 查询出来的结果集The cursor holding the results from the query. 
  49.          */  
  50.         @Override  
  51.         protected void onQueryComplete(int token, Object cookie, Cursor cursor) {  
  52.             // TODO Auto-generated method stub  
  53.             super.onQueryComplete(token, cookie, cursor);  
  54.             if(cursor != null && cursor.getCount()>0){  
  55.                 int columnCount = cursor.getColumnCount();  
  56.                 while(cursor.moveToNext()){  
  57.                     for(int i=0;i<columnCount;i++){  
  58.                         columnName = cursor.getColumnName(i);  
  59.                         value = cursor.getString(i);  
  60.                         Log.i(TAG,"当前是第"+cursor.getPosition() + "行:" + columnName + ":" + value);  
  61.                     }  
  62.                 }  
  63.             }  
  64.         }  
  65.   
  66.     }  
  67. }  


 

运行结果:

 

 

  

 GZ应届大学生IT it菜鸟营

分享到:
评论

相关推荐

    8:Android项目源码-毕业设计源码(168套).rar

    Android SMS 短信内容显示在一个 泡泡 形状的窗口中.zip Android 打包签名 从生成keystore到完成签名.zip Android-QuickSearchBox程序源码.zip android常用图片特效处理.zip android超炫的图片浏览器.zip Android...

    android上百例精品实例源码(非常值得下载)收藏

    Android系统源码获取及编译.zip android项目实例 商业项目源代码.rar Gmail备份手机短信【源码】.zip http 演示Demo.zip OA精灵2011_Android版.rar PopWindow.rar Preference_Demo.rar TestListView02.rar WIFI 扫描...

    android源码包集合1

    360新版特性界面源代码.rar aidl跨进程调用.rar andbatdog电池监控.rar andbatdog监视电池.rar andricoFacebook客户端.rar Android 实现自动接听...Android系统源码获取及编译.zip android项目实例 商业项目源代码.rar

    Android例子源码指定号码短信拦截

    本例子是一个短信拦截防火墙的例子源码,可以拦截指定号码的短信,让短信不显示。这个例子不像前面发的那两个可以启动后直接在后台运行,需要手动指定拦截号码,不知道前两个源码的朋友可以在本站搜一下短信拦截就...

    疯狂Android讲义源码

     10.4 短信管理器(SmsManager) 400  10.5 音频管理器  (AudioManager) 404  10.5.1 AudioManager简介 404  10.6 振动器(Vibrator) 407  10.6.1 Vibrator简介 407  10.6.2 使用Vibrator控制手机振动 407...

    传智播客Android视频教程-课程源码.rar

    传智播客 Android 视频教程 课程源码 课程安排 第一天 1&gt;搭建Android开发环境 2&gt; 创建与启动手机模拟器 3&gt; 学习使用ANDROID操作系统 4&gt; 开发与运行(卸载)第一个ANDROID应用 5&gt; 项目的目录结构 6&gt; 项目清单文件...

    TP新版抢单系统 开源招财宝自由宝HZ区块系统源码+带门票支付+激活码功能

    TP新版抢单系统,招财宝自由宝 HZ区块系统源码带门票支付与激活码功能源代码全开源无加密[Thinkphp 内核] 源码为原始版本 完整版本 为框架源码 如完善细节功能运营请自行修改二开 提示:程序为手机端访问 电脑端登录...

    大学生创业项目-垃圾短信过滤APP电信诈骗识别拦截系统源码+项目说明.zip

    大学生创业项目_垃圾短信过滤APP电信诈骗识别拦截系统源码+项目说明.zip 【项目语言】 web页面:html、css、JavaScript、JQuery、Bootstrap等 安卓前端开发:java 后端服务器:python(flask框架) 【技术要点】 ...

    android中利用广播实现指定电话号码的短信的拦截 源码

    利用广播进行过滤短信,可以将你需要加密的短信显示到这个app上,而不会在显示到系统自带的短信中

    android手机安全卫士

    显示当前系统运行的进程信息 显示系统内存信息, 可以杀死某个进程,批量杀死进程,通过桌面widget 实时展现用户当前的手机内存状态。 上网管理: 显示出每个程序wifi和3g/2g 访问的上传和下载的流量,帮助用户了解程序...

    Android应用源码急速多功能手机助手项目

    本项目是一套功能强大的手机助手...实现了手机应用软件的管理、SD文件管理、安卓手机短信的备份与还原、电池状态监控显示、程序锁、流量统计和查询、手电筒等七大主要功能,本站之前也介绍过一个免费的手机助手项目源码

    Android开发案例驱动教程 配套代码

    9.4 Android系统内置Intent 199 本章小结 201 第10章 数据存储 203 10.1 健康助手案例 203 10.2 Android数据存储概述 205 10.3 本地文件 205 10.3.1 访问SD卡 207 10.3.2 访问应用文件目录 212 10.4 SQLite...

    Android电话、短信、联系人相关操作源码合集

    本代码合集包括10个源代码:(1)call_listener利用广播接收器监听来电、去电,...(4)send_sms_activity通过系统程序发送短信 (5)send_sms通过SmsManager类直接发送短信 (6)save_send_sms保存短信发送记录。短信

    74cms 骑士人才系统 v4.1.23 正式版 人才招聘系统源码

    修复 下订单短信通知无法发送问题(阿里大于) 修复 后台选择原始链接后,部分页面显示伪静态问题 修复 部分数据库版本下,后台职位列表页SQL报错 新增 企业营业执照审核结果微信模板消息通知 优化 企业职位列表添加...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--android root下禁用组件 |--android 判断网络状态 |--android 对话框样式 |--android 开机启动 |--android 挪动dialog的位置 |--android 控制对话框位置 |--android 根据uri获取路径 |--android 模拟器错误 |--...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    包含部分书中源码 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与ADTplug...

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    python+毕业设计《基于Android的新闻推荐客户端设计与实现》+源码+课程作业

    用户的个人主页显示自己关注的帖子信息,查询自己发布的帖子提问信息,查询自己的回答评论信息,还可以编辑个人资料,上次自己的头像,用户还可以给你邮箱发验证码绑定邮箱,给手机发短信码绑定手机,功能多多!...

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

    安卓是一种广泛使用的移动操作系统,具有开放性和灵活性,因此我们选择开发安卓项目源码,以满足开发人员的需求。 首先,我们的安卓项目源码提供了丰富的功能和模块,可以满足各种类型的安卓应用需求。无论是社交、...

Global site tag (gtag.js) - Google Analytics