系统短信库的一些用法

来源:互联网 发布:数控程序员考试题 编辑:程序博客网 时间:2024/06/01 10:27

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<String> list = new ArrayList<String>();        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;        }

 

 

原创粉丝点击