android系统短信库的一些用法

简介:

1、查询所有短信,按发件人进行分组

 
  1. Cursor  mCursor =  
  2.    
  3.                     managedQuery(Uri.parse("content://sms"),  
  4.    
  5.                         new String[] {"_id,address,date,read,status,type,body,count(address) as " 
  6.    
  7.                             + "totleCount from (select _id,substr(address,4) as address,date,read,status,type,body " 
  8.    
  9.                             + "from sms where address like \"+86%\" union select _id,address,date,read,status,type,body " 
  10.    
  11.                             + "from sms where address not like \"+86%\") r group by r.address order by r.date desc --"},  
  12.    
  13.                         null,  
  14.    
  15.                         null,  
  16.    
  17.                         null); 

2、删除一个联系人的所有短信会话,包括+86的号码

 
  1. /**  
  2.  
  3.  * 删除一个联系人的所有短信会话,包括+86的号码  
  4.  
  5.  * @param phone  
  6.  
  7.  */ 
  8.  
  9. public int deleteMsgSession(Context context, String phone)  
  10.  
  11. {  
  12.  
  13.     String phoneBytitle = "";  
  14.  
  15.     if (!phone.startsWith("+86"))  
  16.  
  17.     {  
  18.  
  19.         phoneBytitle = "+86" + phone;  
  20.  
  21.     }  
  22.  
  23.     else 
  24.  
  25.     {  
  26.  
  27.             phoneBytitle = phone.substring(3);  
  28.  
  29.     }  
  30.  
  31.       
  32.  
  33.     Cursor cursor =  
  34.  
  35.         context.getContentResolver()  
  36.  
  37.             .query(Uri.parse("content://sms"), new String[] {"distinct thread_id"}, "address = ? or address = ?"new String[] {phone, phoneBytitle}, null);  
  38.  
  39.     List<String> list = new ArrayList<String>();  
  40.  
  41.     if (null != cursor)  
  42.  
  43.     {  
  44.  
  45.         if (cursor.moveToFirst())  
  46.  
  47.         {  
  48.  
  49.             do 
  50.  
  51.             {  
  52.  
  53.                 int thread_id = cursor.getInt(0);  
  54.  
  55.                 list.add(String.valueOf(thread_id));  
  56.  
  57.  
  58.             } while (cursor.moveToNext());  
  59.  
  60.         }  
  61.  
  62.     }  
  63.  
  64.      if (null != cursor)  
  65.  
  66.     {  
  67.  
  68.         cursor.close();  
  69.  
  70.         cursor = null;  
  71.  
  72.     }          
  73.  
  74.     int size = list.size();  
  75.  
  76.     if(size == 0)  
  77.  
  78.     {  
  79.  
  80.         return -1;  
  81.  
  82.     }  
  83.  
  84.     else 
  85.  
  86.     {  
  87.  
  88.         int num = 0;  
  89.  
  90.         for (int i = 0; i < size; i++)  
  91.  
  92.         {  
  93.  
  94.             int res = context.getContentResolver().delete(Uri.parse("content://sms/conversations/" + list.get(i)),  
  95.  
  96.                 nullnull);  
  97.  
  98.             num = num + res;  
  99.  
  100.         }  
  101.  
  102.           System.out.println("sms_num:" + num);  
  103.  
  104.         return num;  
  105.  
  106.     }  
  107.  

3、向系统库插入短信、版本不同插入的字段有所区别

 
  1. /**  
  2.    
  3.      * 将发送的短信保存到系统短信库中  
  4.    
  5.      */ 
  6.    
  7.     private void foreverSendMsg(String content)  
  8.    
  9.     {  
  10.    
  11.         ContentValues values = new ContentValues();  
  12.    
  13.         //系统SDK的版本号  
  14.    
  15.         String sdkVersion = android.os.Build.VERSION.SDK;  
  16.    
  17.         try 
  18.    
  19.         {  
  20.    
  21.             // 发送时间  
  22.    
  23.             values.put("date", System.currentTimeMillis());  
  24.    
  25.             // 阅读状态  
  26.    
  27.             values.put("read"1);  
  28.    
  29.             // 送达号码  
  30.    
  31.             values.put("address", phoneNumberTextView.getText().toString());  
  32.    
  33.             // 送达内容  
  34.    
  35.             values.put("body", content);  
  36.    
  37.            
  38.    
  39.             //SDK为2.1时,插入的字段  
  40.    
  41.             if(ConstValue.SDK_VERSION == Integer.valueOf(sdkVersion))  
  42.    
  43.             {  
  44.    
  45.                 values.put("status", -1);  
  46.    
  47.                 values.put("type"2);  
  48.    
  49. //                values.put("locked", 0);  
  50.    
  51.             }  
  52.    
  53.             else 
  54.    
  55.             {  
  56.    
  57.                 // 设置可见  
  58.    
  59.               values.put("seen"1);  
  60.    
  61.             }  
  62.    
  63.            
  64.    
  65.             getContentResolver().insert(Uri.parse("content://sms/sent"), values);  
  66.    
  67.         }  
  68.    
  69.         catch (Exception e)  
  70.    
  71.         {  
  72.    
  73.             e.printStackTrace();  
  74.    
  75.         }  
  76.    
  77.         finally 
  78.    
  79.         {  
  80.    
  81.             values = null;  
  82.    
  83.         } 

 





     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/817121,如需转载请自行联系原作者


相关文章
|
2月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
95 2
|
2月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
46 0
|
16天前
|
监控 Android开发 iOS开发
深入探索安卓与iOS的系统架构差异:理解两大移动平台的技术根基在移动技术日新月异的今天,安卓和iOS作为市场上最为流行的两个操作系统,各自拥有独特的技术特性和庞大的用户基础。本文将深入探讨这两个平台的系统架构差异,揭示它们如何支撑起各自的生态系统,并影响着全球数亿用户的使用体验。
本文通过对比分析安卓和iOS的系统架构,揭示了这两个平台在设计理念、安全性、用户体验和技术生态上的根本区别。不同于常规的技术综述,本文以深入浅出的方式,带领读者理解这些差异是如何影响应用开发、用户选择和市场趋势的。通过梳理历史脉络和未来展望,本文旨在为开发者、用户以及行业分析师提供有价值的见解,帮助大家更好地把握移动技术发展的脉络。
|
13天前
|
Dart 开发工具 Android开发
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
|
1月前
|
编解码 前端开发 Android开发
Android经典实战之TextureView原理和高级用法
本文介绍了 `TextureView` 的原理和特点,包括其硬件加速渲染的优势及与其他视图叠加使用的灵活性,并提供了视频播放和自定义绘制的示例代码。通过合理管理生命周期和资源,`TextureView` 可实现高效流畅的图形和视频渲染。
82 12
|
2月前
|
编解码 测试技术 Android开发
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
本文详细介绍了如何利用CameraX库实现高质量的照片及视频拍摄功能,包括添加依赖、初始化、权限请求、配置预览与捕获等关键步骤。此外,还特别针对不同分辨率和帧率的视频拍摄提供了性能优化策略,确保应用既高效又稳定。
103 1
Android经典实战之用 CameraX 库实现高质量的照片和视频拍摄功能
|
1月前
|
Android开发 UED 开发者
Android经典实战之WindowManager和创建系统悬浮窗
本文详细介绍了Android系统服务`WindowManager`,包括其主要功能和工作原理,并提供了创建系统悬浮窗的完整步骤。通过示例代码,展示了如何添加权限、请求权限、实现悬浮窗口及最佳实践,帮助开发者轻松掌握悬浮窗开发技巧。
67 1
|
2月前
|
监控 Java API
Android经典实战之OkDownload:一个经典强大的文件下载开源库,支持断点续传
本文介绍的 OkDownload 是一个专为 Android 设计的开源下载框架,支持多线程下载、断点续传和任务队列管理等功能,具备可靠性、灵活性和高性能特点。它提供了多种配置选项和监听器,便于开发者集成和扩展。尽管已多年未更新,但依然适用于大多数文件下载需求。
117 1
|
2月前
|
Java 物联网 Android开发
移动应用与系统:技术演进与未来展望探索安卓应用开发:从新手到专家的旅程
【8月更文挑战第28天】本文将深入探讨移动应用开发的技术演进、移动操作系统的发展历程以及未来的发展趋势。我们将通过实例和代码示例,展示如何利用最新的技术和工具来开发高效、可靠的移动应用。无论你是初学者还是经验丰富的开发者,这篇文章都将为你提供有价值的信息和见解。 【8月更文挑战第28天】在这个数字时代,掌握安卓应用的开发技能不仅是技术人员的追求,也成为了许多人实现创意和梦想的途径。本文将通过深入浅出的方式,带领读者从零基础开始,一步步走进安卓开发的奇妙世界。我们将探讨如何配置开发环境,理解安卓应用的核心组件,以及如何通过实际编码来构建一个功能完整的应用。无论你是编程新手还是希望提升自己的开发者
|
2月前
|
安全 Android开发 iOS开发
安卓与iOS的终极对决:哪个系统更适合你?
在智能手机的世界里,安卓和iOS两大操作系统如同两座巍峨的山峰,各自拥有庞大的用户群体。本文将深入浅出地探讨这两个系统的优缺点,并帮助你找到最适合自己的那一款。让我们一起揭开这场技术盛宴的序幕吧!