博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
系统短信库的一些用法
阅读量:4992 次
发布时间:2019-06-12

本文共 3381 字,大约阅读时间需要 11 分钟。

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

Cursor  mCursor =                    managedQuery(Uri.parse("content://sms"),                        new String[] {"_id,address,date,read,status,type,body,count(address) as "                            + "totleCount from (select _id,substr(address,4) as address,date,read,status,type,body "                            + "from sms where address like \"+86%\" union select _id,address,date,read,status,type,body "                            + "from sms where address not like \"+86%\") r group by r.address order by r.date desc --"},                        null,                        null,                        null);

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

/**     * 删除一个联系人的所有短信会话,包括+86的号码     * @param phone     */    public int deleteMsgSession(Context context, String phone)    {        String phoneBytitle = "";        if (!phone.startsWith("+86"))        {            phoneBytitle = "+86" + phone;        }        else        {                phoneBytitle = phone.substring(3);        }                Cursor cursor =            context.getContentResolver()                .query(Uri.parse("content://sms"), new String[] {"distinct thread_id"}, "address = ? or address = ?", new String[] {phone, phoneBytitle}, null);        List
list = new ArrayList
(); if (null != cursor) { if (cursor.moveToFirst()) { do { int thread_id = cursor.getInt(0); list.add(String.valueOf(thread_id)); } while (cursor.moveToNext()); } } if (null != cursor) { cursor.close(); cursor = null; } int size = list.size(); if(size == 0) { return -1; } else { int num = 0; for (int i = 0; i < size; i++) { int res = context.getContentResolver().delete(Uri.parse("content://sms/conversations/" + list.get(i)), null, null); num = num + res; }// System.out.println("sms_num:" + num); return num; } }

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

 

/**     * 将发送的短信保存到系统短信库中     */    private void foreverSendMsg(String content)    {        ContentValues values = new ContentValues();        //系统SDK的版本号        String sdkVersion = android.os.Build.VERSION.SDK;        try        {            // 发送时间            values.put("date", System.currentTimeMillis());            // 阅读状态            values.put("read", 1);            // 送达号码            values.put("address", phoneNumberTextView.getText().toString());            // 送达内容            values.put("body", content);                     //SDK为2.1时,插入的字段            if(ConstValue.SDK_VERSION == Integer.valueOf(sdkVersion))            {                values.put("status", -1);                values.put("type", 2);//                values.put("locked", 0);            }            else            {                // 设置可见              values.put("seen", 1);            }                     getContentResolver().insert(Uri.parse("content://sms/sent"), values);        }        catch (Exception e)        {            e.printStackTrace();        }        finally        {            values = null;        }

 

 

转载于:https://www.cnblogs.com/vus520/archive/2011/03/31/2561892.html

你可能感兴趣的文章
2018年最新小程序一键智能生成平台限时限量销售!
查看>>
集合遍历过程iterator, 添加删除元素报异常
查看>>
echarts一些笔记
查看>>
最长上升子序列
查看>>
Java-面向对象
查看>>
salesforce 零基础学习(四十四)实现checkbox列表简单过滤功能
查看>>
Android 异步下载
查看>>
c# 中 利用 CookieContainer 对 Cookie 进行序列化和反序列化校验
查看>>
Leetcode 743. Closest Leaf in a Binary Tree
查看>>
如何用Java实现反转排序
查看>>
自己动手写字符串库函数 一(C语言实现) 分类: C语言学习 ...
查看>>
说说接口封装
查看>>
Linux Supervisor的安装与使用入门---SuSE
查看>>
C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
查看>>
oracle查锁表
查看>>
PHP SSH2 不支持 IdentityFile
查看>>
eclipse 僵死/假死 问题排查及解决
查看>>
番茄时间
查看>>
四位计算机的原理及其实现【转】
查看>>
mediawiki简易安装文档
查看>>